即使index_col = None

时间:2019-02-01 22:11:51

标签: python excel pandas dataframe indexing

我正试图将excel文件读入数据框中,我想稍后再设置索引,所以我不希望熊猫将列0用作索引值。

默认情况下(index_col=None),它不应使用第0列作为索引,但是我发现,如果工作表的单元格A1中没有没有值,则它将使用。

是否有任何方法可以克服此问题(我正在加载许多在单元格A1中没有值的工作表)?

当test1.xlsx在单元格A1中具有值“ DATE”时,这将按预期工作:

In [19]: pd.read_excel('test1.xlsx')                                             
Out[19]: 
                 DATE         A         B         C
0 2018-01-01 00:00:00  0.766895  1.142639  0.810603
1 2018-01-01 01:00:00  0.605812  0.890286  0.810603
2 2018-01-01 02:00:00  0.623123  1.053022  0.810603
3 2018-01-01 03:00:00  0.740577  1.505082  0.810603
4 2018-01-01 04:00:00  0.335573 -0.024649  0.810603

但是当工作表在单元格A1中没有值时,它会自动将第0列的值分配给索引:

In [20]: pd.read_excel('test2.xlsx', index_col=None)                             
Out[20]: 
                            A         B         C
2018-01-01 00:00:00  0.766895  1.142639  0.810603
2018-01-01 01:00:00  0.605812  0.890286  0.810603
2018-01-01 02:00:00  0.623123  1.053022  0.810603
2018-01-01 03:00:00  0.740577  1.505082  0.810603
2018-01-01 04:00:00  0.335573 -0.024649  0.810603

这不是我想要的。

所需结果:与第一个示例相同(但列标签可能带有“未命名”)。

Documentation

  

index_col:int,int列表,默认为无。

     

列(0索引)用作DataFrame的行标签。如果没有这样的列,则不传递任何值。

3 个答案:

答案 0 :(得分:1)

您正在描述的问题与一个已知的熊猫错误匹配。此错误已在最近的pandas 0.24.0 release中修复:

  

错误修复

     

答案 1 :(得分:0)

自从最近几天以来,我基本上面临着同样的问题。

我有一个Excel文件,该文件的第一列标题也为空白。因此,当读取它时,它将作为索引读取。

我尝试了许多选项,但是下面的代码使用跳过行而不是标头选项工作。有趣的是,对于没有标题的列,标题行使用“未命名:0”命名模式,而在使用标题选项的情况下,它们不起作用。我们正在使用熊猫0.20.1版本:

B

文档未提供有关此的更多信息。但是以上解决方法可以节省您的时间。

答案 2 :(得分:-3)

您也可以使用

index_col=0

代替

index_col = None