【问题标题】:Should I stack, pivot, or groupby?我应该堆叠、旋转还是分组?
【发布时间】:2020-04-19 15:59:47
【问题描述】:
我仍在学习如何使用数据框,但仍然无法做到这一点...我得到了这样的数据框:
A B C D1 D2 D3
1 2 3 5 6 7
我需要它看起来像:
A B C DA D
1 2 3 D1 5
1 2 3 D2 6
1 2 3 D3 7
我知道我应该使用 groupby 之类的东西,但我仍然找不到好的文档。
【问题讨论】:
标签:
python-3.x
pandas
pandas-groupby
pandas-datareader
【解决方案1】:
这是wide_to_long
ydf=pd.wide_to_long(df,'D',i=['A','B','C'],j='DA').reset_index()
ydf
A B C DA D
0 1 2 3 1 5
1 1 2 3 2 6
2 1 2 3 3 7
【解决方案2】:
使用melt:
df.melt(['A','B','C'], var_name='DA', value_name='D')
输出:
A B C DA D
0 1 2 3 D1 5
1 1 2 3 D2 6
2 1 2 3 D3 7
使用set_index 和stack
df.set_index(['A','B','C']).stack().reset_index()
输出:
A B C level_3 0
0 1 2 3 D1 5
1 1 2 3 D2 6
2 1 2 3 D3 7
而且,您可以通过重命名列标题等来做家务......