我们可以使用 .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()]
当然,这不起作用。我担心我不在正确的道路上,所以我想我会问你们!谢谢!
答案 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