我有一个如下数据框,其中Dates为列,并希望将其转换为表格(长)形式。
> PPPP = pd.DataFrame({'1/1/2001': [5,6,7,8,9],
> '1/1/2001':[45,46,47,48,49],
> '1/2/2001':[15,16,17,18,19],
> '1/3/2001':[25,26,27,28,29],
> 'Category1':['aa','bb','cc','dd','ee'],
> 'Category2':['XX','YY','ZZ','FF','KK']})
我非常感谢有关如何做到这一点的任何建议,因为它已成为我的噩梦。 我发现很多关于如何与枢轴(从长到宽)做相反的信息,但似乎没有相反的材料。 :(
答案 0 :(得分:3)
我建议使用melt
:
df = PPPP.melt(['Category1','Category2'], value_name='a', var_name='b')
print (df)
Category1 Category2 b a
0 aa XX 1/1/2001 45
1 bb YY 1/1/2001 46
2 cc ZZ 1/1/2001 47
3 dd FF 1/1/2001 48
4 ee KK 1/1/2001 49
5 aa XX 1/2/2001 15
6 bb YY 1/2/2001 16
7 cc ZZ 1/2/2001 17
8 dd FF 1/2/2001 18
9 ee KK 1/2/2001 19
10 aa XX 1/3/2001 25
11 bb YY 1/3/2001 26
12 cc ZZ 1/3/2001 27
13 dd FF 1/3/2001 28
14 ee KK 1/3/2001 29
答案 1 :(得分:3)
使用stack
PPPP.set_index(['Category1','Category2']).stack()
Out[226]:
Category1 Category2
aa XX 1/1/2001 45
1/2/2001 15
1/3/2001 25
bb YY 1/1/2001 46
1/2/2001 16
1/3/2001 26
cc ZZ 1/1/2001 47
1/2/2001 17
1/3/2001 27
dd FF 1/1/2001 48
1/2/2001 18
1/3/2001 28
ee KK 1/1/2001 49
1/2/2001 19
1/3/2001 29
dtype: int64