2013-10-22 53 views
1

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

> 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()]

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

回答

4

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

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

欧普希望提供这些地点回到帧,只需要创建一个转换和分配。

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