首页 > 解决方案 > 将具有多列的数据框重塑为行组

问题描述

inp 数据框

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]
               })

我的预期输出

df = pd.DataFrame({'Loc': ['Hyd', 'Hyd','Hyd','Hyd','Bang','Bang','Bang','Bang'],
               'Item': ['A', 'A', 'B', 'B','A', 'A', 'B', 'B'],
               'VAR' : ['Sales','Values','Sales','Values','Sales','Values','Sales','Values'],
               'May': [100, 1000, 100, 1000, 100, 1000, 100, 1000],
                'June': [200, 2000, 200, 2000, 200, 2000, 200, 2000]
               })

我尝试了多种使用融化和枢轴的解决方案,但似乎没有任何效果?不知道我在哪里失踪?

这是我的代码

    dem.melt(['Part','IBU','Date1']).pivot_table(index=['Part','IBU','variable'],columns=['Date1'])

任何帮助将非常感激

标签: pythonpandas

解决方案


你可以在 pandas 中使用 melt 和 pivot 函数:

df_melted = pd.melt(df, id_vars=["Loc", "Item", "Month"], value_vars=["Sales", "Values"])

这将导致:

在此处输入图像描述

接着:

df_pivot = df_melted.pivot_table(index=["Loc", "Item", "variable"], columns="Month")

因此,最终输出将是:

在此处输入图像描述


推荐阅读