下面显示的数据框
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
答案 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