Python/Pandas如何遍历CSV数据框单列行值修改另一列对应取值
实现方案
优先使用映射字典+Pandas矢量化操作实现,无需逐行遍历,代码简洁且执行效率远高于循环遍历,7000行数据可瞬时完成填充。
前置修正:调整代码语法错误
你提供的两段代码存在缺失字符串引号的问题,先修正避免运行报错:
- 列名定义修正:
df.columns=['agent_name', 'case_id', 'case_type', 'case_subtype', 'regional_team']
- 人员名单定义修正:
latam_team = ['Jose Gonzales', 'Jennifer Pasale', 'Lorena Lorenzo'] eur_team = ['John Smith', 'Alaister Mckinney', 'Victoria Norton'] nam_team = ['Jenny Rivera', 'Jacob White', 'Emma Tilman']
步骤1:构造姓名-区域映射字典
将人员名单转为{姓名: 区域编码}的字典,方便后续批量匹配:
name_region_map = {} # 批量加入各区域人员映射 for name in latam_team: name_region_map[name] = 'LATAM' for name in eur_team: name_region_map[name] = 'EUR' for name in nam_team: name_region_map[name] = 'NAM' # 后续补充ASPAC团队名单后,按照同样逻辑加入字典即可
步骤2:批量填充regional_team列
直接用Pandas的map方法完成匹配赋值,不在映射字典中的姓名会自动保留NaN值,符合你的占位符需求:
df['regional_team'] = df['agent_name'].map(name_region_map)
如果需要把未匹配到的人员统一标记为其他值(比如暂时归为ASPAC),可补充fillna方法:
# 可选:未匹配人员统一标记为ASPAC # df['regional_team'] = df['agent_name'].map(name_region_map).fillna('ASPAC')
内容的提问来源于stack exchange,提问作者PwrSerg
相关产品推荐
相关产品推荐

