python中从宽到长的数据操作示例
发布时间:2020-12-20 11:58:25 所属栏目:Python 来源:网络整理
导读:我刚刚提出了一个类似的问题 here,并得到了答案,但认识到,通过向DataFrame添加一个新列,所提出的解决方案失败,因为问题有点不同. 我想离开这里: import pandas as pddf = pd.DataFrame({'ID': [1,2],'Value_2013': [100,200],'Value_2014': [245,300],'Valu
我刚刚提出了一个类似的问题
here,并得到了答案,但认识到,通过向DataFrame添加一个新列,所提出的解决方案失败,因为问题有点不同.
我想离开这里: import pandas as pd df = 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_2016 0 1 100 245 200.0 1 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 Year 0 1 100 2013 1 1 245 2014 2 1 200 2016 3 2 200 2013 4 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 Year 0 1 100 2013 1 1 245 2014 2 1 200 2016 3 2 200 2013 4 2 300 2014 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |