Python批量处理CSV报KeyError时如何定位对应的出错文件?
解决方案
方法1:异常捕获(推荐,不中断正常文件处理)
直接在循环中增加try-except块,捕获KeyError时输出对应文件名,剩余正常文件可继续处理,修改后的代码如下:
import pandas as pd import numpy as np from pathlib import Path inp_dir = Path(r'C:/Users/jtharian/Desktop/bbc/') for file in inp_dir.glob('*.csv'): try: # 注:pandas新版本中error_bad_lines已弃用,可替换为on_bad_lines='skip' df = pd.read_csv(file, sep=',', quotechar='|', on_bad_lines='skip') df['confidence'] = df['confidence'].replace(np.nan, 0.01) df.to_csv(file, index=False) except KeyError: print(f"缺失confidence列的问题文件:{file.resolve()}")
方法2:提前校验列存在性
读取文件后先判断confidence列是否存在,不存在就直接打印文件名跳过处理:
import pandas as pd import numpy as np from pathlib import Path inp_dir = Path(r'C:/Users/jtharian/Desktop/bbc/') for file in inp_dir.glob('*.csv'): df = pd.read_csv(file, sep=',', quotechar='|', on_bad_lines='skip') if 'confidence' not in df.columns: print(f"缺失confidence列的问题文件:{file.resolve()}") continue df['confidence'] = df['confidence'].replace(np.nan, 0.01) df.to_csv(file, index=False)
两种方法都可以精准定位到所有缺失confidence列的CSV文件,可根据使用习惯选择。
内容的提问来源于stack exchange,提问作者NewInPython
相关产品推荐
相关产品推荐

