Pandas双文件数据匹配合并结果不符合预期问题咨询
两个文件数据匹配合并问题修复方案
原代码核心错误点
- 文件读取逻辑错误:两个打开的文件重命名为同一个变量
file1,无法正确读取file2内容;原文件为空格分隔,错误使用逗号分割行内容 - 变量名混乱:定义的DataFrame变量为
df_file1、df_file2,后续调用时错误使用未定义的file1、file2变量 - 匹配逻辑错误:一是正则提取规则有问题,短key会先匹配长key的前缀导致匹配结果错误;二是未将file2提取的匹配键作为df_file2的正式列,合并时关联逻辑错误导致出现重复匹配行
- 输出参数错误:分隔符设置不符合要求,未关闭自动引号添加逻辑
修复后可运行代码
import pandas as pd import numpy as np # 读取空格分隔的两个文件,跳过自带表头自行定义列名 df1 = pd.read_csv('file1', sep='\s+', names=['key', 'val1'], skiprows=1) df2 = pd.read_csv('file2', sep='\s+', names=['raw_key', 'val2'], skiprows=1) # 直接提取file2中DD=后的内容作为匹配键,避免正则子串匹配错误 df2['key'] = df2['raw_key'].str.replace('DD=', '', regex=False) # 基于key列左连接合并两个表 merge_df = df1.merge(df2[['key', 'val2']], on='key', how='left') # 空值填充为要求的NaN,输出时关闭引号、索引和表头 merge_df = merge_df.fillna('NaN') merge_df.to_csv('file1#', sep='\t', index=False, header=False, quoting=3)
效果说明
修复后输出的file1#内容完全符合预期,不会出现重复行、多余引号的问题,未匹配到的TPO对应值为NaN。
内容的提问来源于stack exchange,提问作者LoganLee
相关产品推荐
相关产品推荐

