批量处理TSV文件时如何识别并删除缺失标签列的不合格文件
解决方案
核心判断逻辑:正常无缺失的TSV文件跳过#开头的注释行后,每一行由制表符分隔为4列,缺失标签列的文件每行只有3列,只需要在读取文件后先校验DataFrame的列数即可过滤异常文件。
修改后完整代码
import os import pandas as pd path = "All_TSV_Files" files = [file for file in os.listdir(path) if file.endswith(".tsv")] c=0 for file in files: file_path = os.path.join(path, file) df = pd.read_csv(file_path, comment='#', header=None, sep='\t', engine='python', error_bad_lines=False) # 校验列数:正常文件为4列,缺失标签列只有3列 if len(df.columns) < 4: # 不需要删除源文件可注释下面这行 os.remove(file_path) # 跳过后续处理 continue df.drop(df.columns[[0, 1]], axis=1, inplace=True) df.to_csv(os.path.join(path, f'admin{c}.txt'),index=False,header=False) c+=1
注意事项
- 如果你使用的是pandas 1.4及以上版本,可以将参数
error_bad_lines=False替换为on_bad_lines='skip',避免出现废弃用法警告 - 异常文件默认执行删除操作,如果只需要跳过处理不删除源文件,注释掉
os.remove(file_path)即可
内容的提问来源于stack exchange,提问作者Kimi Shui
相关产品推荐
相关产品推荐

