gpt4 book ai didi

python - 对 Pandas 数据框中的一列求和,其中一列满足条件,但由另一列分组

转载 作者:太空宇宙 更新时间:2023-11-04 07:48:29 25 4
gpt4 key购买 nike

我有一个这样的数据框:

        Ref_No  Definition  Total_to_Add
0 ref1 B 20
1 ref2 A 30
2 ref1 B 40
3 ref2 A 50
4 ref1 B 60
5 ref2 B 50
6 ref1 B 60
7 ref2 B 50
8 ref1 B 60

对于每个引用,如果它们是“B”和相同的引用编号,我想对 Total_to_Add 求和(我将为 A 设置另一列)。有 100 个引用编号。

我可以像这样总结那些满足单一条件的:

df['ANSWER'] = df[df['Definition']=='A']['Total_to_Add'].sum()

或者我可以按这样的引用分组:

df['ANSWER']=(df.groupby('Ref_No')['Total_to_Add'].transform('sum'))

但我似乎无法组合这些功能,即创建一个新列,如果定义为“B”并按 Ref_No 进行总计。

我的目标是像下面这样的输出:

        Ref_No  Definition  Total_to_Add  Total_'B'
0 ref1 B 20 240
1 ref2 A 30 100
2 ref1 B 40 240
3 ref2 A 50 100
4 ref1 B 60 240
5 ref2 B 50 100
6 ref1 B 60 240
7 ref2 B 50 100
8 ref1 B 60 240

任何智慧表示赞赏!谢谢

最佳答案

尝试:

df['Total_B'] = (df['Definition'].eq('B').mul(df['Total_to_Add'])
.groupby(df['Ref_No']).transform('sum'))

[输出]

  Ref_No Definition  Total_to_Add  Total_B
0 ref1 B 20 240
1 ref2 A 30 100
2 ref1 B 40 240
3 ref2 A 50 100
4 ref1 B 60 240
5 ref2 B 50 100
6 ref1 B 60 240
7 ref2 B 50 100
8 ref1 B 60 240

关于python - 对 Pandas 数据框中的一列求和,其中一列满足条件,但由另一列分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59195363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com