我应该堆叠,旋转或分组吗?

时间:2019-12-31 01:59:13

标签: python-3.x pandas pandas-groupby pandas-datareader

我仍在学习如何使用数据框,但仍然无法做到这一点……我得到了这样的数据框:

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之类的东西,但仍然找不到好的文档。

2 个答案:

答案 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_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

而且,您可以通过重命名列标题等来做家务。