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

时间:2015-07-01 11:23:31

标签: python pandas

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

id;type;start;end
Test;OIS;01/07/2016;01/07/2018
;;;
;;;

但是,pandas read_csv也会尝试读取空行;;;。有没有办法自动忽略这些空数据的尾随行?

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

一些澄清:

  • 空数据的行总是在尾随,这是从Excel生成的csv文件的常见问题。
  • 数据是用户生成的,因此无法手动清理文件。

2 个答案:

答案 0 :(得分:2)

不确定您是否可以直接使用read_csv,但可以使用dropna:

import pandas as pd

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

答案 1 :(得分:0)

如果您知道要忽略最后两行,则可以传递参数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