使用Pandas匹配两文件首列公共值拼接第二列数据的实现方法问询
实现代码
假设你读取的两个DataFrame分别命名为df1(对应File1)和df2(对应File2),有两种常用实现方式:
方式1:映射法(代码更简洁)
# 提取File2第一列的关键词做映射字典 match_map = df2.set_index(df2[0].str.extract(r'G=(.*)', expand=False))[1].to_dict() # 直接给File1生成新列 df1[2] = df1[0].map(match_map) # 如果需要字符串格式的'NaN'可取消注释下一行 # df1[2] = df1[2].fillna('NaN')
方式2:合并法(适合复杂关联场景)
# 提取File2的匹配键 df2['match_key'] = df2[0].str.extract(r'G=(.*)') # 左连接保留File1全部行 res_df = df1.merge( df2[['match_key', 1]], left_on=0, right_on='match_key', how='left' ) # 清理列名得到最终结果 res_df = res_df.drop(columns='match_key').rename(columns={'1_y': 2})
说明
两种方式输出结果都和你需求的File1#完全一致,匹配不到的位置默认填充pandas空值NaN,按需调整填充格式即可。
内容的提问来源于stack exchange,提问作者LoganLee
相关产品推荐
相关产品推荐

