我有一个这样的数据框:
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
