匹配两个DataFrame中的演员姓名并添加累计加权得分
解决方案
核心思路
将df1的演员-得分关系转为字典以提升匹配效率,再对df2的每一行演职人员内容拆分、匹配、累加得分,最终生成新列。
代码实现
假设df1的列名为Actor Names(演员姓名)和weighted Score(加权得分),df2的演职人员列名为Cast:
- 构建演员得分映射字典
# 把df1转为姓名到得分的字典,实现快速查找 score_map = df1.set_index('Actor Names')['weighted Score'].to_dict()
- 定义累计得分计算函数
def calculate_total_score(cast_content): # 拆分演职人员字符串(假设用逗号分隔,可根据实际分隔符调整) actors = [actor.strip() for actor in cast_content.split(',')] # 累加匹配到的演员得分,未在df1中的演员得0分 total_score = sum(score_map.get(actor, 0) for actor in actors) return total_score
- 为df2添加新列
# 对df2的演职人员列应用函数,生成累计得分新列 df2['Total Weighted Score'] = df2['Cast'].apply(calculate_total_score)
注意事项
- 如果df2的演职人员列本身是列表类型,直接去掉
split(',')和strip()步骤,直接遍历列表即可。 - 若演职人员的分隔符不是逗号,需替换
split(',')中的分隔符为实际使用的符号(如|、;等)。
内容的提问来源于stack exchange,提问作者J Stizzy
相关产品推荐
相关产品推荐

