在熊猫数据框中提取具有最大值的行

Sar*_*ara 1 extract dataframe pandas

我们可以使用.idxmax来获取数据帧(df)的最大值。我的问题是我有一个包含多列(超过 10 个)的 df,其中一列具有相同值的标识符。我需要提取具有最大值的标识符:

>df

id  value
a   0
b   1
b   1
c   0
c   2
c   1
Run Code Online (Sandbox Code Playgroud)

现在,这就是我想要的:

>df

id  value
a   0
b   1
c   2
Run Code Online (Sandbox Code Playgroud)

我试图通过使用来获得它df.groupy(['id']),但这有点棘手:

df.groupby(["id"]).ix[df['value'].idxmax()]

当然,那是行不通的。我担心我没有走在正确的道路上,所以我想我会问你们!谢谢!

Jef*_*eff 5

关闭!按id分组,然后使用value列;返回每个组的最大值。

In [14]: df.groupby('id')['value'].max()
Out[14]: 
id
a     0
b     1
c     2
Name: value, dtype: int64
Run Code Online (Sandbox Code Playgroud)

Op 想要将这些位置提供回框架,只需创建一个转换和分配。

In [17]: df['max'] = df.groupby('id')['value'].transform(lambda x: x.max())

In [18]: df
Out[18]: 
  id  value  max
0  a      0    0
1  b      1    1
2  b      1    1
3  c      0    2
4  c      2    2
5  c      1    2
Run Code Online (Sandbox Code Playgroud)