由另一列熊猫分组的列中的总和

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

我需要有关此任务的帮助:我的df看起来像这样:

country   id       x       y
AT        11      50     100
AT        12      NaN     90
AT        13      NaN    104
AT        22      40      50
AT        23      30      23
AT        61      40      88
AT        62      NaN     78  
UK        11      40      34
UK        12      NaN     22
UK        13      NaN     70

我需要的是第一行的y列之和,而不是x中的NaN,并按列ID左侧的第一个数字分组。分别针对每个国家/地区。最后,我只需要删除NaN。

结果应该是这样的:

country   id       x       y
AT        11      50     294
AT        22      40      50
AT        23      30      23
AT        61      40     166
UK        11      40      126

有人可以帮忙吗?

非常感谢!

python pandas
1个回答
1
投票

用途:

df1 = (df.groupby(['country', df['x'].notna().cumsum()])
         .agg({'id':'first', 'x':'first', 'y':'sum'})
         .reset_index(level=1, drop=True)
         .reset_index())
print (df1)
  country  id     x    y
0      AT  11  50.0  294
1      AT  22  40.0   50
2      AT  23  30.0   23
3      AT  61  40.0  166
4      UK  11  40.0  126
© www.soinside.com 2019 - 2024. All rights reserved.