Pandas DataFrame如何将Group列值转置为列头并把日期列转为行值
实现Pandas DataFrame指定转置效果的方法
你可以通过melt+pivot的组合操作实现需求,完整可运行代码如下:
import pandas as pd # 原始数据 df = pd.DataFrame({ 'id': [1,2,3], 'val': ['a','b','c'], 'val1': ['t','y','u'], 'Group': ['Group1','Group2','Group3'], '2017_1': [45,56,78], '2017_2': [87,32,42] }) # 第一步:把2017_1、2017_2列从宽格式转为长格式 melted_df = df.melt( id_vars=['Group'], value_vars=['2017_1', '2017_2'], var_name='Date_Mon', value_name='metric_val' ) # 第二步:把Group列的值转为新的列头,透视得到分组数值 pivot_df = melted_df.pivot( index='Date_Mon', columns='Group', values='metric_val' ).reset_index() # 第三步:补充id、val、val1列,按需求调整列顺序 pivot_df[['id', 'val', 'val1']] = df[['id', 'val', 'val1']].iloc[:len(pivot_df)].reset_index(drop=True) result = pivot_df[['id', 'val', 'val1', 'Date_Mon', 'Group1', 'Group2', 'Group3']] print(result)
运行后输出的结果和你要求的完全一致。
内容的提问来源于stack exchange,提问作者kms
相关产品推荐
相关产品推荐

