Pandas Pivot和Merge不工作

时间:2016-11-16 07:30:28

标签: python pandas merge pivot-table

我的意见是:

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

那只是给了我绝对的垃圾

想法?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

enter image description here