Python 使用usecols时保留索引列

Python 使用usecols时保留索引列,python,pandas,Python,Pandas,这是对我的问题的重新措辞,希望它更有意义: 当将read_csv与隐式索引(即文件中的第一列没有标题)一起使用时,一切正常,我得到一个数据帧,其索引是文件中的第一列-隐式索引列 但是,如果我指定usecols作为read\u csv的参数,则隐式索引列将被忽略,并且返回的数据帧具有由pandas创建的标准索引(0、1、2、3等) 我无法在列表中显式传递usecols的索引列,然后指定index\u col参数,因为隐式索引列没有标题(熊猫就是这样知道它是隐式索引的) 这有什么办法吗 这是原始问题

这是对我的问题的重新措辞,希望它更有意义:

当将
read_csv
与隐式索引(即文件中的第一列没有标题)一起使用时,一切正常,我得到一个数据帧,其索引是文件中的第一列-隐式索引列

但是,如果我指定
usecols
作为
read\u csv
的参数,则隐式索引列将被忽略,并且返回的数据帧具有由pandas创建的标准索引(0、1、2、3等)

我无法在列表中显式传递
usecols
的索引列,然后指定
index\u col
参数,因为隐式索引列没有标题(熊猫就是这样知道它是隐式索引的)

这有什么办法吗

这是原始问题:

我试图读取一个csv文件,该文件有一列未命名的行索引,其余列命名为:

       |head1|head2|
index1 | data1 | data2 |
当我使用usecols读入一定数量的列时,我还希望包括行索引。但是,由于这些未命名,我无法将该字符串包含在usecols列表中

我尝试过将整数索引和字符串组合起来(例如,
usecols=[0,'header1','header2'])
,但这似乎不起作用。
如果我简单地将
ind\u col
指定为0,它将使用我选择的第一列作为索引列


那么,如何在保留文件中的第一个无名列作为行索引的同时读取名称列选择(通过usecols)?

请尝试不使用usecols,这里有

您可以直接阅读以下内容:

In [11]: pd.read_csv('foo.csv', sep='\s*\|\s*', index_col=[0])
Out[11]: 
        head1  head2  Unnamed: 3
index1  data1  data2         NaN

In [12]: pd.read_csv('foo.csv', sep='\s*\|\s*', index_col=[0]).dropna(axis=1)
Out[12]: 
        head1  head2
index1  data1  data2

注意:我必须使用
\s*|\s*
作为sep,而不仅仅是
,这样才能不包含空格。

如果我正确理解这个问题,我认为您可能需要将整个csv文件作为数据帧读取,然后选择所需的列。

如下所示:

import pandas as pd
df = pd.read_csv(yourdata, index_col=0).loc[:,'header1']

我最近遇到了同样的问题,并且能够使用默认的未命名方法解决它

data = pd.read_csv('advertising.csv', header=0, index_col=[0] , usecols=['Unnamed: 0', 'radio','sales'])

这不是分隔符的问题,但索引列没有标题。假设我只想导入列“head2”,但保留索引列作为结果系列的索引。我可以做:pd.read_csv('foo.csv',usecols=[0,2],index_col[0]),但如果我只知道列标题(而不知道位置),我做不到:pd.read\u csv('foo.csv',usecols=[0',head2'],index\u col[0])