我应该堆叠、旋转还是分组?

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_indexstack

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 等来进行整理....