首页 > 解决方案 > Pandas 将多列转换为一列

问题描述

我有一个这样的数据集

A    B    C D
Cat Meow  1 2
Dog Grr   3 4

我需要通过创建新列来转换成 bwlow 格式

Level Focus C D
A     Cat   1 2
A     Dog   3 4
B     Meow  1 2
B     Grr   3 4

我不确定如何使用 pivot_table() 实现这一点

标签: pythonpandaspivot

解决方案


尝试使用melt

df.melt(['C', 'D'], var_name='Level', value_name='Focus')

输出:

   C  D Level Focus
0  1  2     A   Cat
1  3  4     A   Dog
2  1  2     B  Meow
3  3  4     B   Grr

出于教学原因的另一种方法:

df.set_index(['C', 'D']).stack().reset_index().rename(columns={'level_2':'Level',0:'Focus'})

输出:

   C  D Level Focus
0  1  2     A   Cat
1  1  2     B  Meow
2  3  4     A   Dog
3  3  4     B   Grr

推荐阅读