使用Python对多份~0.txt文件批量执行VLOOKUP匹配list80.csv数据报错求解
多文件批量自动VLOOKUP功能实现方案
核心问题原因
- 仅输出1个结果文件:通常是遍历目标文件时使用了固定的输出文件名,每次循环覆盖上一次的输出结果,或是未正确过滤所有
~0.txt结尾的文件 - 运行报错:大概率为匹配字段数据类型不一致、空值未处理、文件编码不匹配或字段名存在空格/大小写差异导致
可直接复用的实现代码
import pandas as pd import os # 加载匹配表并转为字典,提升匹配效率,统一转为字符串避免类型不匹配导致匹配失败 match_df = pd.read_csv("list80.csv", dtype={"location": str}) # 可追加去除字段首尾空格的逻辑,避免格式问题导致匹配失效 match_df["location"] = match_df["location"].str.strip() match_map = dict(zip(match_df["location"], match_df["gt"])) # 过滤当前目录下所有~0.txt结尾的待处理文件 target_files = [f for f in os.listdir(".") if f.endswith("~0.txt")] for file_path in target_files: # 读取待处理txt文件,sep根据实际分隔符调整,制表符用\t,逗号用, df = pd.read_csv(file_path, sep="\t", dtype={"loc": str}) df["loc"] = df["loc"].str.strip() # 匹配填充gt字段,匹配不到默认填充「无匹配」,可自定义为NaN或其他值 df["gt"] = df["loc"].map(match_map).fillna("无匹配") # 每个文件单独输出,避免覆盖 df.to_csv(f"result_{file_path}", index=False, sep="\t", encoding="utf-8")
报错排查方案
- 字段不存在报错:检查csv/txt文件的表头是否存在
location/loc字段,确认字段名没有多余空格、大小写错误 - 编码报错:在
read_csv/to_csv参数中新增encoding="gbk"或encoding="latin-1"适配你的文件编码 - 匹配全部无结果:确认两个匹配字段的内容格式完全一致,比如是否存在多余符号、全半角差异
内容的提问来源于stack exchange,提问作者exagorazo
相关产品推荐
相关产品推荐

