2016-11-16 103 views
3

我輸入的是:熊貓樞軸和合並工作不

Col1 Col2 Col3 Col4 Col5 
0  1 Y A PQR 56 
1  1 Y A XYZ  2 
2  1 Y A DEF 20 
3  2 Y B PQR 18 
4  2 Y B XYZ 24 
5  2 Y B DEF 11 
6  3 Y C PQR 20 
7  3 Y C XYZ  4 
8  3 Y C DEF 18 
9  3 Y C HHH 23 

我輸出我想要的是:

 Col1 Col2 Col3 PQR XYZ DEF HHH 
0  1  Y  A 56 2 20 NaN 
1  2  Y  B 18 24 11 NaN 
2  3  Y  C 20 4 18 23.0 

然而,當我做如下:

output = input.pivot_table(index='Col1',columns='Col4',values='Col5') 

我得到:

Col1 PQR  XYZ DEF HHH 
    1  56  2  20 NaN 
    2  18  24  11 NaN 
    3  20  4  18 23.0 

哪裏Col1中現在是該指數

這不是整個事情 - 所以我嘗試和應用:

output = output.merge(input,how='left',left_index=True,right_on='Col1') 

這只是給了我絕對的垃圾

思考PLS?

回答

4

我想你需要添加Col2Col3到參數index

output = input.pivot_table(index=['Col1', 'Col2','Col3'],columns='Col4',values='Col5') 
       .reset_index() 
print (output) 
Col4 Col1 Col2 Col3 DEF HHH PQR XYZ 
0  1 Y A 20.0 NaN 56.0 2.0 
1  2 Y B 11.0 NaN 18.0 24.0 
2  3 Y C 18.0 23.0 20.0 4.0 
+0

這就行了 - 感謝VM! – spiff

3
df.groupby(['Col1', 'Col2', 'Col3', 'Col4']).Col5.mean().unstack() \ 
    .rename_axis(None, 1).reset_index() 

enter image description here

+0

感謝您的回覆 - 確實使用堆棧(),這也是我嘗試過的,但未成功 – spiff