在DataFrame上应用groupby以显示累积统计信息

sge*_*tim 0 python group-by dataframe pandas pandas-groupby

假设我有一个如下所示的DataFrame:

Bank Name     House     This Wk
Barc          Germany   100
Barc          UK        300
Barc          UK        500
JPM           Japan     200
JPM           NYC       100
BOA           LA        900
BOA           LA        50
BOA           LA        50
DB            Italy     45
Run Code Online (Sandbox Code Playgroud)

我想按银行名称进行分组,同时输出最大的房屋价值以及总价值......

例如,使用上面的示例将导致:

Bank Name     Total     House     This Wk
Barc          900       UK        500
JPM           300       Japan     200
BOA           1000      LA        900
DB            45        Italy     45
Run Code Online (Sandbox Code Playgroud)

从本质上讲,它是Total按银行名称分组,但也输出最大的贡献者,House总数和贡献金额This Wk.

我该怎么做呢?

Max*_*axU 5

In [121]: df.groupby('Bank Name', group_keys=False) \
     ...:   .apply(lambda x: x.nlargest(1, 'This Wk').assign(Total=x['This Wk'].sum())) \
     ...:   [['Bank Name','Total','House','This Wk']]
     ...:
Out[121]:
  Bank Name  Total  House  This Wk
5       BOA   1000     LA      900
2      Barc    900     UK      500
8        DB     45  Italy       45
3       JPM    300  Japan      200
Run Code Online (Sandbox Code Playgroud)