Python pandas read_csv:忽略带有空数据的尾随行

Python pandas read_csv:忽略带有空数据的尾随行,python,pandas,Python,Pandas,我想从csv文件中读取以下数据: id;type;start;end Test;OIS;01/07/2016;01/07/2018 ;;; ;;; 但是,pandas read_csv将尝试读取空行也是。有没有办法自动忽略这些空数据的尾随行 这些行导致了一个问题,因为我将read_csv与转换器一起使用,转换器中的函数在遇到无效数据时会尽职尽责地抛出异常,这意味着我甚至没有到达有效的数据帧。我可以将函数更改为将无效数据转换为NaN,然后从数据帧中删除NaNs,但这样我就会默默地删除错误数据以及

我想从csv文件中读取以下数据:

id;type;start;end
Test;OIS;01/07/2016;01/07/2018
;;;
;;;
但是,pandas read_csv将尝试读取空行
也是。有没有办法自动忽略这些空数据的尾随行

这些行导致了一个问题,因为我将
read_csv
转换器一起使用,转换器中的函数在遇到无效数据时会尽职尽责地抛出异常,这意味着我甚至没有到达有效的数据帧。我可以将函数更改为将无效数据转换为
NaN
,然后从数据帧中删除
NaN
s,但这样我就会默默地删除错误数据以及那些空行

一些澄清:

  • 空数据的行总是拖尾的,这是从Excel生成的csv文件的常见问题
  • 数据由用户生成,因此不能手动清理文件

不确定您是否可以直接使用read\u csv读取,但您可以使用dropna:

import pandas as pd

df= pd.read_csv("in.csv", delimiter=";")
df.dropna(how="all", inplace=True) 
print(df)

如果知道要忽略最后两行,则可以传递param
skipfooter=2

In [197]:
t="""id;type;start;end
Test;OIS;01/07/2016;01/07/2018
;;;
;;;"""
df = pd.read_csv(io.StringIO(t), sep=';', skipfooter=2)
df

Out[197]:
     id type       start         end
0  Test  OIS  01/07/2016  01/07/2018

从文档中:“
跳过空白行
:是否跳过空白行,而不是将其解释为NaN值”,作为
读取csv()
的属性<代码>跳过空白行
默认为
True
,因此它应该跳过空白行。我假设这个选项指的是真正的空行,而不是只包含分隔符的行。@Anne你找到方法了吗?我遇到了完全相同的问题(在我的例子中,空;;;行的数量不可预测),一种方法是自己清理文件,删除尾随;;;;,还有
df.dropna(how=“all”..
只会删除包含所有NaN的行。您想如何处理无效数据?对于这个特定的文件,我当然可以,但这些数据应该由不同的用户传入,我认为如果他们不必检查文件的尾随行,这将是用户友好的。这就是为什么我要寻找一个自动解决方案关于。对于无效数据,我真的想抛出一个异常…我认为通过将数据转换为NaN来处理转换器函数中的尾随行不是一个好主意。在创建数据帧之前,您仍然可以执行一个就地筛选,这与数据来自何处无关。您也可以执行sing请传递该文件并找到包含第一个
;;;;;…
的行num,然后使用
跳过页脚=行num
让我们开始。