Pandas read_excel 有时会创建索引,即使 index_col=None

新手上路,请多包涵

我正在尝试将 excel 文件读入数据框,我想稍后设置索引,所以我不希望 pandas 使用第 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

这不是我想要的。

期望的结果:与第一个示例相同(但可能使用“未命名”作为列标签)。

文档

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

用作 DataFrame 的行标签的列(从 0 开始索引)。如果没有这样的列,则通过 None。

原文由 Bill 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 728
2 个回答

您描述的问题与已知的 pandas 错误相匹配。此错误已在最近的 pandas 0.24.0 版本 中修复:

Bug修复

  • read_excel() 中的错误,其中 index_col=None 没有被尊重并且无论如何都解析索引列( GH18792GH20480

原文由 Xukrao 发布,翻译遵循 CC BY-SA 4.0 许可协议

您也可以使用

index_col=0

代替

index_col = None

原文由 jabbiez 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题