我仍在学习如何使用数据框,但仍然无法做到这一点……我得到了这样的数据框:
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之类的东西,但仍然找不到好的文档。
答案 0 :(得分:5)
这是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
答案 1 :(得分: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
而且,您可以通过重命名列标题等来做家务。