对熊猫数据透视表中不同级别的列进行重新排序

时间:2019-01-29 05:20:45

标签: python-3.x pandas

下面显示的数据框

df = pd.DataFrame(index=range(3), columns=['tr','ca','cy','value'])
df.loc[0] = [1,1,'x',20]
df.loc[1] = [1,0,'y',300]
df.loc[2] = [0,0,'x',300]
df['value'] = df['value'].astype(np.int)

结果

  tr ca cy  value
0  1  1  x     20
1  1  0  y    300
2  0  0  x    300

可以设置为

pt = pd.pivot_table(df, values='value', index=['tr'], columns=['ca','cy'], fill_value=0)

结果

ca    0        1
cy    x    y   x
tr
0   300    0   0
1     0  300  20

对于tr和反转的ca,我需要1/0的顺序。我意识到我可以pt.loc[[1,0],]这样做,并且可以按正确的顺序让我tr。如何为ca执行此操作?我希望的答案是

ca   1    0     
cy   x    x    y
tr
1   20    0  300
0    0  300    0

1 个答案:

答案 0 :(得分:3)

您可以使用pt[[1,0]].loc[[1,0]]之类的熊猫提供的基本索引,或者如果要处理该多索引中的特定索引,请尝试重新索引,即

pt.reindex(level='ca',columns=[1,0]).reindex(index=[1,0])

ca   1    0     
cy   x    x    y
tr              
1   20    0  300
0    0  300    0