使用Pandas按指定列合并两个文件匹配结果全为NaN问题求助
Pandas合并文件匹配结果全为NaN的问题原因及修复方案
核心问题原因
- 分隔符配置错误:输入文件为多空格分隔的字段,
pd.read_csv默认使用逗号作为分隔符,直接读取会将整行内容识别为单个列,无法拆分出对应字段,无法完成匹配。 - 表头识别错误:默认配置下
pd.read_csv会将文件第一行识别为列名,你输入文件的第一行本身就是字段索引标识,属于数据的表头部分,未设置header=None时,pandas会生成字符串类型的列名('0'、'1'、'2'),你merge时指定的on=[1]是整数类型的列索引,和实际列名无法匹配,导致合并无匹配结果。
修复后代码
import pandas as pd # 读取时指定空白分隔符、无自定义表头 lines_1 = pd.read_csv(file1, sep='\s+', header=None) lines_2 = pd.read_csv(file2, sep='\s+', header=None) merge_two_files = pd.merge(left=lines_1, right=lines_2, on=[1], how='left') merge_two_files.columns = range(len(merge_two_files.columns)) # 如需导出可添加:merge_two_files.to_csv('file1#', sep='\t', index=False, header=False)
运行上述代码即可得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者LoganLee
相关产品推荐
相关产品推荐

