【问题标题】:Pandas read_excel removes columns under empty headerPandas read_excel 删除空标题下的列
【发布时间】:2018-12-08 22:55:48
【问题描述】:

我有一个 Excel 文件,其中 A1、A2、A3 为空,但 A4:A53 包含列名。

在“R”中,当您读取该数据时,A1、A2、A3 的列名将是“X_1,X_2,X_3”,但在使用 pandas.read_excel 时,它只会跳过前三列,从而忽略它们.问题是每个文件中的列数是动态的,因此我无法解析列范围,也无法编辑文件并为 A1、A2、A3 添加“虚拟名称”

【问题讨论】:

  • 只是为了检查,您是指跳过的列或行吗? B 列和其他列中是否有数据?可以举个例子吗?
  • 这是被跳过的列。我试图做一个小例子,但我无法格式化代码(看起来像)。我刚刚发现,发生的事情是前三列被合并到一个索引中

标签: python-3.x pandas


【解决方案1】:

使用参数skip_blank_lines=False,像这样:

pd.read_excel('your_excel.xlsx', header=None, skip_blank_lines=False)

这个 stackoverflow 问题(最终)为我指明了正确的方向: Python Pandas read_excel doesn't recognize null cell

pandas.read_excel docs 不包含任何关于此的信息,因为它是关键字之一,但您可以在此处的通用 io 文档中找到它:http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table

【讨论】:

  • 它不起作用 - 它仍然忽略前三列
【解决方案2】:

快速解决方法是将header=None 传递给pandas 的read_excel() 函数,手动将缺失值插入第一行(现在它将包含列名),然后将该行分配给df.columns 并删除它之后。不是最优雅的方式,但我不知道您的问题的内置解决方案

编辑:我所说的“手动插入”是指fillna(),因为这似乎是某种自动化过程

【讨论】:

  • 其实这是个好主意!我不会将其作为答案,因为它不是问题的答案,而是解决了问题(并且确实使一些事情变得很好!)。谢谢
猜你喜欢
  • 2019-05-02
  • 2021-06-21
  • 2020-01-20
  • 1970-01-01
  • 2021-12-25
  • 2022-12-23
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
相关资源
最近更新 更多