Python读取txt文件并基于共享列合并时遇KeyError问题求助
解决txt文件合并时的KeyError问题
问题分析
你的代码里有几个关键问题导致报错:
- 变量名不匹配:读取第一个文件时赋值给了
df,但合并时用的是df1,变量引用错误。 - 分隔符参数错误:
sep='delimiter'是错误用法,pandas会把整行内容当成单一列读取,自然找不到KeyNumber这类表头。 - 列名不一致:错误提示是
KeyError: 'KeyName',但代码里写的是on='KeyNumber',要么是你代码写错了列名,要么是实际文件里的共享列名是KeyName。
修复步骤
- 修正变量名:保证读取后的DataFrame变量名和合并时用的一致:
df1 = pd.read_csv('file1.txt', sep='\t') # 分隔符根据实际文件修改 df2 = pd.read_csv('file2.txt', sep='\t')
指定正确分隔符:根据txt文件的实际分隔方式调整
sep参数:- 制表符分隔:
sep='\t' - 逗号分隔:
sep=',' - 多空格分隔:
sep='\s+'
拿不准的话可以打开txt文件直接看内容的分隔符号。
- 制表符分隔:
确认共享列名:检查两个文件的表头,保证共享列名称完全一致(注意大小写、空格),比如错误提示是
KeyName,合并时就写:
output1 = pd.merge(df1, df2, on='KeyName', how='inner')
- 验证表头识别情况:读取文件后先打印列名确认,避免拼写错误:
print(df1.columns) print(df2.columns)
完整示例代码
import pandas as pd # 读取文件,替换为实际分隔符 df1 = pd.read_csv('file1.txt', sep='\t') df2 = pd.read_csv('file2.txt', sep='\t') # 查看实际识别到的列名 print("file1列名:", df1.columns) print("file2列名:", df2.columns) # 合并文件,替换为实际共享列名 output1 = pd.merge(df1, df2, on='KeyName', how='inner') # 查看合并结果 print(output1.head())
内容的提问来源于stack exchange,提问作者mistapencil
相关产品推荐
相关产品推荐

