2017-06-16 42 views
2

比方说,我的数据框看起来是这样的:如何根据组内实体查找最大金额?

Bank Entity Amount 
JPM NY  5000 
JPM NY  300 
BOA LA  10000 
BOA China 3000 
MS Japan 21000 

我想根据上面的实体输出,同时牢记的是,银行是不同的,所以数据帧就变成了:

Bank Entity Amount 
JPM NY  5000 
BOA LA  10000 
MS Japan 21000 

我将如何去创建这样的东西?我知道如何sort_valuesgroup_by,但我肯定做错了什么。

任何想法?我相信这非常简单。

回答

2

使用DataFrameGroupBy.idxmax为最大值的索引,然后通过loc选择:

df = df.loc[df.groupby('Bank')['Amount'].idxmax()] 
print (df) 
    Bank Entity Amount 
2 BOA  LA 10000 
0 JPM  NY 5000 
4 MS Japan 21000 

或者sort_values,然后再使用GroupBy.last

df = df.sort_values('Amount').groupby('Bank', as_index=False).last() 
print (df) 
    Bank Entity Amount 
0 BOA  LA 10000 
1 JPM  NY 5000 
2 MS Japan 21000 
+0

完美,谢谢! – sgerbhctim

+0

很高兴能帮到你,周末愉快! – jezrael

+1

对你也是如此 - 你是我和我一样生产一周的唯一原因。 – sgerbhctim