如何根据群组内的实体找到最大金额?

时间:2017-06-16 14:24:16

标签: python pandas dataframe

让我们说我的DataFrame看起来像这样:

ggplot() +
     geom_point(data = mtcars, aes(mpg, disp, colour = cyl)) +
     geom_point(data = filter(mtcars, cyl == 6), aes(qsec, drat))

我想基于顶层实体输出,同时请记住银行不同,因此DataFrame会变为:

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_values,但我确实做错了什么。

有什么想法吗?我确定它非常简单。

1 个答案:

答案 0 :(得分: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