Pandas groupby sum,将特定列保留在结果数据框中

问题描述 投票:0回答:1

假设我具有以下数据集。

Name   Asset    Group   PN
Anton  10       Admin   124223
Brad   15       Planer  774555
Kevin  20       Admin   234987
Brad   10       Planer  774555
Peter  25       Planer  861254
Anton  10       Admin   124223
Peter  5        Planer  861254
Kevin  35       Admin   234987
David  10       AT      561256 

现在,我想汇总列名,所以我这样做:

agg = df.groupby('Name', as_index=False)['Asset'].sum()

像魅力一样运作。我的输出看起来像这样:

Name   Asset    
Anton  20       
Brad   25       
Kevin  55       
Peter  30       
David  10      

但是,我想保留列“ Group”而不更改此列的任何内容,这样我的输出将看起来像这样:

Name   Asset   Group 
Anton  20      Admin 
Brad   25      Planer 
Kevin  55      Admin 
Peter  30      Planer 
David  10      AT

如何获得后一个结果?

非常感谢您的帮助!

python pandas dataframe aggregate slice
1个回答
2
投票
[如果可能,每个Name具有相同的组,然后将列添加到列表并聚合sum

agg = df.groupby(['Name', 'Group'], as_index=False, sort=False)['Asset'].sum() print (agg) Name Group Asset 0 Anton Admin 20 1 Brad Planer 25 2 Kevin Admin 55 3 Peter Planer 30 4 David AT 10

或者如果需要在另一列中添加任何其他列,则需要汇总所有列,例如通过firstlast

agg = (df.groupby('Name', as_index=False, sort=False) .agg({'Asset':'sum', 'Group':'first', 'PN':'last'})) print (agg) Name Asset Group PN 0 Anton 20 Admin 124223 1 Brad 25 Planer 774555 2 Kevin 55 Admin 234987 3 Peter 30 Planer 861254 4 David 10 AT 561256

© www.soinside.com 2019 - 2024. All rights reserved.