将pandas groupby结果合并回DataFrame

Rob*_*eth 9 python pandas

我有一个看起来像这样的DataFrame ......

   idn value  
0  ID1    25
1  ID1    30
2  ID2    30
3  ID2    50
Run Code Online (Sandbox Code Playgroud)

我想在此框架中添加另一列,即'idn'分组的最大'值'

我想要一个看起来像这样的结果.

   idn value  max_val
0  ID1    25       30
1  ID1    30       30
2  ID2    30       50
3  ID2    50       50
Run Code Online (Sandbox Code Playgroud)

我可以使用像这样的组来提取'值'的最大值...

df[['idn', 'value']].groupby('idn')['value'].max()
Run Code Online (Sandbox Code Playgroud)

但是,我无法将该结果合并回原始DataFrame.

获得理想结果的最佳方法是什么?

谢谢

Pau*_*l H 9

transform在groupby对象上使用该方法:

In [5]: df['maxval'] = df.groupby(by=['idn']).transform('max')

In [6]: df
Out[6]: 
   idn  value  maxval
0  ID1     25      30
1  ID1     30      30
2  ID2     30      50
3  ID2     50      50
Run Code Online (Sandbox Code Playgroud)

  • `.transform('max')`也是这个的捷径:) (2认同)