使用Pandas查找CSV中匹配指定字符串的所有行并导出为新CSV的问题求解
问题修复方案
核心问题原因
- 导出CSV时未指定分隔符,pandas默认使用逗号作为分隔符,导致输出文件出现逗号分隔的行
- 数据类型不匹配:pandas自动推断列类型时,可能出现待匹配列表和待筛选CSV第一列的类型不一致(比如一个是整型一个是字符串),或是列内容存在不可见空白符,导致
isin匹配仅命中部分行
修改后代码
import pandas as pd # 读取待匹配列表,统一转为字符串并去除首尾空白 list_to_find = pd.read_csv(input_file, header=None, dtype=str)[0].str.strip() # 读取竖线分隔的CSV文件,指定第一列类型为字符串 data_to_read = pd.read_csv(csv_file, sep='|', header=None, dtype={0: str}) # 匹配筛选 output_data_csv = data_to_read[data_to_read[0].str.strip().isin(list_to_find)] # 导出时指定分隔符为竖线 output_data_csv.to_csv('output.csv', index=False, header=None, sep='|')
关键修改点
- 读取文件时显式指定相关列为字符串类型,避免类型差异导致匹配失败
- 对所有需要匹配的字符串调用
str.strip()去除首尾空白符,排除隐藏字符干扰 - 导出CSV时显式指定
sep='|',保证输出为竖线分隔格式
内容的提问来源于stack exchange,提问作者gesgallar
相关产品推荐
相关产品推荐

