为什么在pandas中使用read_csv函数的skip_blank_lines = True消除不了空白行?

请教:为什么在pandas中使用read_csv函数的skip_blank_lines = True消除不了空白行?

原CSV文件是这样的:

img

在Jupyter notebook中显示是这样的:

img

加入了comment = ‘#’参数和skip_blank_lines = True参数,前者起作用了,但后者没起作用:

img

我查看了pandas官网的用户指南,里面显示skip_blank_lines参数的作用是正常的,没有进行更改或者移除,另外它的默认值就是True,也就是说read_csv函数应该是自动省略空行的,但实际中并不是:

img

请教各位,这是为什么?为什么使用不了skip_blank_lines参数移除空白行?非常感谢!

以下回答参考GPT并且由Bony-整理:
确实,在 Pandas 的 read_csv() 函数中,skip_blank_lines 参数的默认值就是 True,这意味着空白行应该被自动省略掉,而不需要进行额外的设置。因此,您可能需要进一步检查您的 CSV 文件,以确定其中是否真的存在空白行。

如果您已经确定存在空白行,但使用 skip_blank_lines=True 参数仍然无法跳过这些行,则可以尝试其他解决方案。例如,可以使用正则表达式来匹配和删除空白行,或者使用 na_values 参数将空白行识别为缺失值并将其删除。另外,您也可以考虑将文件导入到 Pandas 后手动处理这些空白行。

以下是一个示例代码,使用 na_values 参数将空白行识别为缺失值,并使用 dropna() 方法删除这些行:

import pandas as pd

df = pd.read_csv('file.csv', comment='#', na_values=[''], skip_blank_lines=True)
df = df.dropna()

在这里,我们将 na_values 参数设置为空白字符串,并将 skip_blank_lines 参数设置为 True。读取完文件后,我们使用 dropna() 方法删除所有包含缺失值的行,从而删除了所有空白行。另外,我们还添加了 comment 参数,将以 # 开头的行视为注释并忽略掉。