Pandas读取CSV报Error tokenizing错误 数据未分列自动处理方案
问题原因
- ParserError触发逻辑:目标CSV前7行为无固定结构的实验元数据注释行,pandas默认从首行开始解析时,会将单行注释识别为仅1个字段的内容,读取到第8行正式表格行时检测到2万+字段,字段数不匹配直接抛出解析错误。
- 指定制表符分隔后数据未拆分的原因:该类单细胞转录组RSEC_MolsPerCell标准输出文件为逗号分隔格式,分隔符指定错误会导致整行内容被识别为单个字段,无法按列拆分。
可复用实现方案
单文件正确读取代码
核心配置为跳过前7行注释、指定正确的逗号分隔符,可按需设置行索引适配单细胞分析流程:
import pandas as pd import os file_path = '/Users/csb/Desktop/Zebrafish_scRNA/sample_Control_WTA_1_RSEC_MolsPerCell.csv' mat = pd.read_csv( file_path, skiprows=7, # 跳过前7行非数据注释内容 sep=',', # 明确使用CSV标准逗号分隔符,替换之前错误的制表符配置 index_col=0 # 可选:将首列(基因ID/细胞Barcode列)设为行索引,符合单细胞矩阵常规使用格式 ) # 校验读取结果 print(f"数据读取完成,维度为{mat.shape[0]}行 × {mat.shape[1]}列")
批量处理同格式文件代码
遍历目标目录下所有符合命名规则的表达矩阵文件,统一参数读取后存入字典,适配批量分析场景:
data_dir = '/Users/csb/Desktop/Zebrafish_scRNA/' matrix_collection = {} # 存储所有样本矩阵,key为文件名,value为对应Pandas DataFrame for filename in os.listdir(data_dir): # 仅筛选目标格式的MolsPerCell文件,避免读入目录下其他无关文件 if filename.endswith('_RSEC_MolsPerCell.csv'): full_file_path = os.path.join(data_dir, filename) print(f"开始读取样本:{filename}") matrix_collection[filename] = pd.read_csv( full_file_path, skiprows=7, sep=',', index_col=0 ) print(f"{filename}读取完成,数据维度:{matrix_collection[filename].shape}")
兼容提示:若遇到个别非标准分隔符的输出文件,无需手动排查分隔符类型,可将
read_csv的分隔符参数替换为自动检测配置,替换原有sep参数即可:sep=None, engine='python'
内容的提问来源于stack exchange,提问作者Caroline
相关产品推荐
相关产品推荐

