这是我的问题的措辞版本,希望更有意义:
当使用read_csv隐式索引(即文件中的第一列没有标题)时,一切正常,我得到一个数据框,其索引是文件中的第一列 - 隐式索引列.
但是,如果我指定usecols为参数read_csv,则忽略隐式索引列,并且返回的数据帧具有由pandas(0,1,2,3等)创建的标准索引.
我无法显式传递列表中的索引列usecols,然后指定index_col参数,因为隐式索引列没有标头(这就是pandas知道它是隐式索引的方式)!
有没有办法解决?
这是原始问题:
我正在尝试读取一个csv文件,该文件有一列没有命名的行索引,其余的列命名为:
       |head1|head2|
index1 | data1 | data2 |
当我使用usecols读入一定数量的列时,我还想包含行索引.但是,由于这些没有命名,我不能在我的列表中包含usecols的字符串.
我已经尝试过整数索引和字符串的组合(例如,usecols = [0, 'header1', 'header2']但这似乎不起作用.
如果我只是指定ind_col为0,它将使用我选择的第一列作为索引列.
那么,我如何读取名称列选择(通过usecols)同时保留文件中的第一个无名列作为我的行索引?
小智 5
我最近遇到了同样的问题,并且能够使用 pandas 默认的未命名方法解决它。
data = pd.read_csv('advertising.csv', header=0, index_col=[0] , usecols=['Unnamed: 0', 'radio','sales'])
尝试不使用 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*as sep 而不仅仅是|为了不包含空格。
| 归档时间: | 
 | 
| 查看次数: | 2606 次 | 
| 最近记录: |