从特定列创建数据框

时间:2016-09-07 16:20:40

标签: python pandas

我正在尝试从我的csv文件中的AB列创建Pandas中的数据帧。 (AB是第27列)。

我正在使用这一行:

df = pd.read_csv(filename, error_bad_lines = False, usecols = [27])

...导致此错误:

ValueError: Usecols do not match names.

我对熊猫很新,有人能指出我做错了什么吗?

2 个答案:

答案 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=Nonenames参数,则第一行将用作标题:

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与名称不匹配的原因。