基于Team字段从df_2提取Data3至df_1的实现问题
解决方案
不用for循环,用字典映射+map的方式就能高效解决,完全不受列数多少的影响:
1. 构建Team与Data3的映射字典
先从df_2中提取Team和Data 3的对应关系,转成字典:
team_data3_map = df_2.set_index('Team')['Data 3'].to_dict()
2. 给df_1新增Data3列
直接用df_1的Team列匹配这个字典,一键生成新列:
df_1['Data 3'] = df_1['Team'].map(team_data3_map)
效果验证
处理后的df_1结构如下:
| Team | Data 1 | Data 2 | Data 3 |
|---|---|---|---|
| Team 1 | 10 | 12 | 16 |
| Team 2 | 20 | 15 | 18 |
| Team 3 | 15 | 23 | 13 |
| Team 4 | 25 | 14 | 10 |
可选:处理未匹配项
如果df_1的Team存在df_2里没有的取值,可以用fillna设置默认填充值:
df_1['Data 3'] = df_1['Team'].map(team_data3_map).fillna(0) # 用0填充未匹配的行
内容的提问来源于stack exchange,提问作者Link
相关产品推荐
相关产品推荐

