python中从宽到长的数据 *** 作示例

python中从宽到长的数据 *** 作示例,第1张

概述我刚刚提出了一个类似的问题 here,并得到了答案,但认识到,通过向DataFrame添加一个新列,所提出的解决方案失败,因为问题有点不同. 我想离开这里: import pandas as pddf = pd.DataFrame({'ID': [1, 2], 'Value_2013': [100, 200], 'Va 我刚刚提出了一个类似的问题 here,并得到了答案,但认识到,通过向DataFrame添加一个新列,所提出的解决方案失败,因为问题有点不同.

我想离开这里:

import pandas as pddf = pd.DataFrame({'ID': [1,2],'Value_2013': [100,200],'Value_2014': [245,300],'Value_2016': [200,float('NaN')]})print(df)    ID  Value_2013  Value_2014  Value_20160   1         100         245       200.01   2         200         300         NaN

至:

df_new = pd.DataFrame({'ID': [1,1,2,'Year': [2013,2014,2016,2013,2014],'Value': [100,245,200,300]})print(df_new)    ID  Value  Year0   1    100  20131   1    245  20142   1    200  20163   2    200  20134   2    300  2014

我有什么想法可以面对这个挑战吗?

解决方法 pandas.melt()方法让你到了一半.之后,这只是一些小的清理.

df = pd.melt(df,ID_vars='ID',var_name='Year',value_name='Value')df['Year'] = df['Year'].map(lambda x: x.split('_')[1])df = df.dropna().astype(int).sort_values(['ID','Year']).reset_index(drop=True)df = df.reindex_axis(['ID','Value','Year'],axis=1)
print(df)   ID  Value  Year0   1    100  20131   1    245  20142   1    200  20163   2    200  20134   2    300  2014
@H_502_37@ 总结

以上是内存溢出为你收集整理的python中从宽到长的数据 *** 作示例全部内容,希望文章能够帮你解决python中从宽到长的数据 *** 作示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1193872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存