2017-06-16 41 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