如何正确读取存在列数不一致的pandas DataFrame数据文件?
正确读取该分号分隔数据文件的解决方案
你遇到的加载异常,大概率是文件路径不匹配(代码里用的本地路径/Data/123451_date.csv和你提供的云盘链接完全不对应),再加上参数配置没适配缺失值场景导致的。下面是一步步的解决思路:
第一步:先搞定文件的可访问路径
你给出的是谷歌云盘共享链接,没法直接用本地路径读取。你可以先把文件下载到本地,记下保存的实际路径(比如放在当前工作目录的话,路径就是./123451_date.csv);如果是在Colab这类云环境里,也可以通过挂载云盘的方式获取可访问的文件路径。
第二步:优化pandas读取参数
针对分号分隔、存在缺失值的文件,推荐用pd.read_csv(比read_table更贴合CSV类文件的读取场景),同时调整参数适配你的数据情况:
import pandas as pd # 替换成你下载后的实际文件路径 df = pd.read_csv( './123451_date.csv', sep=';', index_col=0, engine='python', error_bad_lines=False, na_values=['', 'NaN', 'NA'], # 明确指定哪些值会被识别为缺失值 skip_blank_lines=True # 跳过空行,避免解析异常 )
参数补充说明:
na_values:显式定义缺失值的标识,覆盖pandas默认规则,能更精准匹配你文件里的缺失情况skip_blank_lines:如果文件里存在空行,直接跳过,避免触发解析错误- 保留你原有的
sep=';'、index_col=0、engine='python'(Python引擎比C引擎更灵活,处理特殊分隔或错误行时更稳定)、error_bad_lines=False(跳过解析失败的行)
第三步:验证加载结果
读取完成后,可以用以下代码确认数据是否正常加载:
# 查看前5行数据 print(df.head()) # 统计各列的缺失值数量 print(df.isnull().sum())
如果还是有问题,可以尝试额外调整:
- 加上
encoding='utf-8'或encoding='latin-1'参数,解决文件编码不兼容的问题 - 用
names=['列名1', '列名2', ...]手动指定列名,适配表头格式异常的情况
内容的提问来源于stack exchange,提问作者Wisdom258
相关产品推荐
相关产品推荐

