Pandas匹配同类数据两列并关联求和的高效实现方法
最简实现方案
你可以直接用map()配合分组求和实现,仅需2行代码就能得到目标结果:
import pandas as pd df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7], 'B': [3, 4, 5, 2, 1, 1, 6], 'Hits_A': [10, 40, 50, 35, 24, 60, 30]}) # 核心逻辑 df['Hits_B'] = df['A'].map(df.groupby('B')['Hits_A'].sum()) output = df.drop('B', axis=1)
如果想更极致,可以把核心逻辑合并为1行:
output = df.assign(Hits_B = df['A'].map(df.groupby('B')['Hits_A'].sum())).drop('B', axis=1)
逻辑说明
df.groupby('B')['Hits_A'].sum()会生成一个索引为B的取值、值为对应分组Hits_A总和的Seriesmap()方法会将A列的每个值匹配上述Series的索引,匹配不到自动返回NaN,完全符合你的需求- 最终结果和你原有实现完全一致,不需要额外创建临时表、重命名列或者关联操作
内容的提问来源于stack exchange,提问作者AS_CS
相关产品推荐
相关产品推荐

