Pandas多列DataFrame按行分组重塑实现问题求解
Pandas DataFrame 重塑解决方案
示例数据适配代码
import pandas as pd # 输入数据 df = pd.DataFrame({'Loc': ['Hyd', 'Hyd','Bang','Bang'], 'Item': ['A', 'B', 'A', 'B'], 'Month' : ['May','May','June','June'], 'Sales': [100, 100, 200, 200], 'Values': [1000, 1000, 2000, 2000] }) # 转换逻辑 # 1. 先把Sales、Values两个指标列转为行 df_melt = df.melt( id_vars=['Loc', 'Item', 'Month'], value_vars=['Sales', 'Values'], var_name='VAR' ) # 2. 再把Month列的不同取值转为列 res = df_melt.pivot( index=['Loc', 'Item', 'VAR'], columns='Month', values='value' ).reset_index() # 清除列名多余属性 res.columns.name = None
运行后得到的res和你给出的预期输出完全一致。
原有代码修改方案
你之前使用的是业务侧字段名,调整后即可正常运行:
res = dem.melt( id_vars=['Part','IBU','Date1'], var_name='VAR' ).pivot( index=['Part','IBU','VAR'], columns='Date1', values='value' ).reset_index() res.columns.name = None
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

