我正在尝试从我的csv文件中的AB
列创建Pandas中的数据帧。 (AB是第27列)。
我正在使用这一行:
df = pd.read_csv(filename, error_bad_lines = False, usecols = [27])
...导致此错误:
ValueError: Usecols do not match names.
我对熊猫很新,有人能指出我做错了什么吗?
答案 0 :(得分:2)
这是一个小型演示:
CSV文件(没有标题,即没有列名称):
1,2,3,4,5,6,7,8,9,10
11,12,13,14,15,16,17,18,19,20
我们只会阅读8 - th
列:
In [1]: fn = r'D:\temp\.data\1.csv'
In [2]: df = pd.read_csv(fn, header=None, usecols=[7], names=['col8'])
In [3]: df
Out[3]:
col8
0 8
1 18
PS注意header=None, usecols=[7], names=['col8']
如果您不使用header=None
和names
参数,则第一行将用作标题:
In [6]: df = pd.read_csv(fn, usecols=[7])
In [7]: df
Out[7]:
8
0 18
In [8]: df.columns
Out[8]: Index(['8'], dtype='object')
如果我们只想阅读最后10个 - th
列:
In [9]: df = pd.read_csv(fn, usecols=[10])
... skipped ...
ValueError: Usecols do not match names.
因为pandas会从0
开始计算列数,所以我们必须这样做:
In [12]: df = pd.read_csv(fn, usecols=[9], names=['col10'])
In [13]: df
Out[13]:
col10
0 10
1 20
答案 1 :(得分:-1)
usecols使用csv文件中的列名而不是列号。 在你的情况下,它应该是usecols = [' AB']而不是usecols = [28]这就是你的错误说明usecols与名称不匹配的原因。