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

Pandas读取无表头CSV指定列报错:usecols与列不匹配

解决读取无表头CSV时usecols匹配失败的问题

问题说明

你用这段代码读取无表头CSV:

usecols = [*range(1, 5), *range(7, 9), *range(11, 13)]
df = pd.read_csv('/content/drive/MyDrive/weather.csv', header=None, usecols=usecols, names=['d', 'm', 'y', 'time', 'temp1', 'outtemp', 'temp2', 'air_pressure', 'humidity'])

触发报错:

ValueError: Usecols do not match columns, columns expected but not found: [1, 2, 3, 4, 7, 8, 11, 12]

问题原因

  1. 指定的列索引超出数据集实际范围:从你提供的数据集内容来看,实际列数远小于usecols中指定的索引(比如11、12,还有range(7,9)里的8,这些索引对应的列根本不存在)。
  2. 列名列表长度不匹配:names里有9个名称,但usecols筛选后预期的列数是8个,两者长度不一致也会引发问题。

解决方法

步骤1:确认数据集实际列数

先运行这段代码查看CSV的实际列数和内容:

import pandas as pd
df_temp = pd.read_csv('/content/drive/MyDrive/weather.csv', header=None)
print("实际列数:", df_temp.shape[1])
print("前几行数据预览:")
print(df_temp.head())

步骤2:修正usecols和names

根据实际列数调整参数,结合你提供的数据集内容,实际有8列(索引0到7),若需要提取索引1-7的列,对应你需要的字段,修正后的代码如下:

# 只保留实际存在的列索引
usecols = [1,2,3,4,5,6,7]
# 名称列表长度和usecols列数一致
df = pd.read_csv('/content/drive/MyDrive/weather.csv', header=None, usecols=usecols, names=['d', 'm', 'y', 'time', 'temp1', 'outtemp', 'humidity'])

如果你的数据集里确实有temp2列,说明内容未展示全部列,此时你需要根据实际列索引调整usecols,确保每个索引都在0到(实际列数-1)的范围内。

内容的提问来源于stack exchange,提问作者akanesora

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 22:45:35