Pandas调用pd.read_csv指定usecols报ValueError: Usecols do not match names
报错原因
pd.read_csv()的usecols参数要求传入由列名/列索引组成的可迭代对象(如列表、元组),你直接传入了字符串类型的单个列名"Test Column"。由于字符串本身属于可迭代对象,pandas会把字符串的每个字符拆分为单独的目标列名去匹配数据文件的列,自然找不到对应列触发ValueError,这也是你不传入usecols时读取完全正常的核心原因。
解决方法
有两种常用的修正方案:
- 把单个列名放到列表/元组中传入,将代码中
usecols=test_column修改为usecols=[test_column]即可 - 如果你使用的是0.24及以上版本的pandas,也可以使用lambda表达式写法:
usecols=lambda x: x == test_column
修正后的可运行代码
import pandas as pd test_column = "Test Column" data = pd.DataFrame([1, 2, 3, 4, 5], columns=[test_column]) data.to_csv("test_data.csv", decimal=",", sep=";") # 修正usecols传参格式 data_read = pd.read_csv("test_data.csv", decimal=",", sep=";", usecols=[test_column])
内容的提问来源于stack exchange,提问作者Greg
相关产品推荐
相关产品推荐

