如何基于两个匹配条件从另一个pandas DataFrame取数为当前DataFrame新增列
实现代码
方案1:使用merge关联(推荐)
直接通过双字段左关联匹配,写法简洁性能最优:
# 仅取df中需要的三个字段,和df1按Name、Age双字段左连接 df1 = df1.merge(df[['Name', 'Age', 'FT_Team']], on=['Name', 'Age'], how='left')
说明:用how='left'可以保证df1的原有行全部保留,不会因匹配不到丢失数据。
方案2:使用map实现双条件匹配
如果要按你原本设想的map方法实现,可以先构造双字段的映射字典,再匹配取值:
# 构造(Name,Age)为key,FT_Team为value的映射字典 ft_team_map = df.set_index(['Name', 'Age'])['FT_Team'].to_dict() # 按行匹配填充 df1['FT_Team'] = df1.apply(lambda row: ft_team_map.get((row['Name'], row['Age'])), axis=1)
两种方法都可以得到你期望的结果,数据量较大时优先选merge方案。
内容的提问来源于stack exchange,提问作者Pmannn
相关产品推荐
相关产品推荐

