Pandas读取Excel文件时,会删除空列标题下的列。

3

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

在R中读取这些数据时,A1、A2、A3的列名将为"X_1,X_2,X_3"。但是,在使用pandas.read_excel时,它会简单地跳过前三列,从而忽略它们。问题在于每个文件中的列数都是动态的,因此我无法解析列范围,也不能编辑文件并为A1、A2、A3添加"虚拟名称"。


只是确认一下,您是指跳过的列还是行?B列和其他列中是否有数据?您可以提供一个例子吗? - Sander van den Oord
被跳过的是列。 我尝试做了一个小例子,但是我无法格式化代码(好像是这样)。 我刚刚发现,前三列合并成了一个索引。 - CutePoison
3个回答

1
使用参数skip_blank_lines=False,如下所示:

Use parameter skip_blank_lines=False, like so:

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文档没有包含任何关于此问题的信息,因为它是关键字之一,但你可以在通用io文档中找到它:http://pandas.pydata.org/pandas-docs/stable/io.html#io-read-csv-table

它不起作用 - 它仍然忽略了前三列。 - CutePoison

0

我意识到这是一个旧的线程,但是我通过指定列名并命名最终的空列来解决了它,而不是导入没有名称然后不得不处理带有名称的行(还使用了 use_cols)。请参见下文:

use_cols = 'A:L'

column_names = ['Col Name1', 'Col Name 2', 'Empty Col']

df = pd.read_excel(self._input_path, usecols=use_cols, names=column_names)

0
一个快速的解决方法是将header=None传递给pandas的read_excel()函数,手动将缺失值插入到第一行(现在它将包含列名),然后将该行分配给df.columns并在之后删除它。这不是最优雅的方式,但我不知道有没有内置的解决方案来解决你的问题。
编辑:通过“手动插入”,我指的是一些使用fillna()进行混淆,因为这似乎是某种自动化过程。

其实那是个好主意!我不会将它标记为答案,因为它不是问题的答案,但解决了问题(而且实际上让一些事情变得更好了!)。 - CutePoison

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接