我的意见是:

   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')

那简直就是垃圾
有什么想法吗?

最佳答案

我认为您需要将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

关于python - Pandas 枢轴和合并不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40626328/

10-09 19:09