You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas读取CSV文件时如何正确跳过开头非数据行并处理列数不匹配问题

使用pandas读取CSV文件时如何正确跳过开头非数据行并处理列数不匹配问题

我来帮你搞定这个CSV读取的问题~ 你遇到的核心问题是skiprows参数用错了,导致前面的列定义行和空行没被完全跳过,进而引发列数不匹配的错误。

先理清楚你的文件结构:

  • 前20行是两列格式的列定义
  • 21-23行是空行
  • 真正的18列数据从第24行开始(对应Python的0基索引是23)

你之前写的skiprows=[23]只会单独跳过第24行,但前面的23行(0到22索引)还会被pandas读取,这些行只有2列,和后面数据的18列格式冲突,自然会报错或者读取结果异常。

正确的解决方法

你需要跳过所有前23行(也就是原文件的1-23行),让pandas直接从第24行开始读取数据。具体代码如下:

import pandas as pd

# 跳过前23行(0到22索引),数据从第24行开始
# 如果数据的第一行(原文件第24行)是表头,用header=0;如果没有表头,用header=None并自行指定列名
data = pd.read_csv(fileURL, skiprows=range(23), header=0)

如果数据行里偶尔还有格式错误的行,可以加上on_bad_lines='skip'来跳过异常行,但前提是已经跳过了前面的非数据行,这样就不会把列定义当成错误行处理了:

data = pd.read_csv(fileURL, skiprows=range(23), header=0, on_bad_lines='skip')

补充说明

  • skiprows=range(23)等价于跳过索引0到22的所有行,正好对应原文件的前23行(列定义+空行)
  • 如果你的数据没有表头,记得把header=0改成header=None,然后可以用names参数给数据指定自定义列名,比如:
    col_names = [f'col_{i}' for i in range(18)]  # 假设数据有18列
    data = pd.read_csv(fileURL, skiprows=range(23), header=None, names=col_names)
    

这样应该就能正确读取到那20k行数据了~

备注:内容来源于stack exchange,提问作者Seamus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 09:58:01