获取pandas数据框的子集时出现异常

时间:2016-08-27 04:45:59

标签: python python-2.7 pandas numpy dataframe

我想获取数据框的第一列,第二列和第四列,即列c_a,c_b,c_d,我的代码有什么问题?

我发布了我的代码,数据(123.csv)和错误消息,

sample = pd.read_csv('123.csv', header=None, skiprows=1,
    dtype={0:str, 1:str, 2:str, 3:float})
sample.columns = pd.Index(data=['c_a', 'c_b', 'c_c', 'c_d'])
sample['c_d'] = sample['c_d'].astype('int64')
print sample.shape # output (3, 4)
X = sample.iloc[0, 1, 3]

    raise IndexingError('Too many indexers')
pandas.core.indexing.IndexingError: Too many indexers

123.csv的内容,

c_a,c_b,c_c,c_d
hello,python,pandas,0.0
hi,java,pandas,1.0
ho,c++,numpy,0.0

2 个答案:

答案 0 :(得分:2)

您需要使用df.iloc[:, [0, 1, 3]]代替(或df[[0, 1, 3]])。

逗号分隔行索引器和列索引器。

答案 1 :(得分:2)

尝试

X = sample[['c_a', 'c_b', 'c_d']]

比使用iloc更明确。