我应该堆叠、旋转还是分组?
Should I stack, pivot, or groupby?
我仍在学习如何使用数据框,但仍然做不到...我有一个这样的数据框:
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 之类的东西,但我仍然找不到好的文档。
这是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
使用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
而且,您可以通过重命名列 headers 等来进行整理....
我仍在学习如何使用数据框,但仍然做不到...我有一个这样的数据框:
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 之类的东西,但我仍然找不到好的文档。
这是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
使用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
而且,您可以通过重命名列 headers 等来进行整理....