在pandas dataframe中提取具有最大值的行

时间:2013-10-22 15:29:31

标签: pandas extract dataframe

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

  

> DF

id  value
a   0
b   1
b   1
c   0
c   2
c   1

现在,这就是我想要的:

  

> DF

id  value
a   0
b   1
c   2

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

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

当然,这不起作用。我担心我不在正确的道路上,所以我想我会问你们!谢谢!

1 个答案:

答案 0 :(得分:4)

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

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

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