Pandas:read_csv 忽略空行后的行

Thi*_*elo 6 python pandas

有一个奇怪的 .csv 文件,例如:

header1,header2,header3
val11,val12,val13
val21,val22,val23
val31,val32,val33
Run Code Online (Sandbox Code Playgroud)

很好,但在这些行之后,总是有一个空行,后面跟着很多无用的行。整个东西是线:


header1,header2,header3
val11,val12,val13
val21,val22,val23
val31,val32,val33

dhjsakfjkldsa
fasdfggfhjhgsdfgds
gsdgffsdgfdgsdfgs
gsdfdgsg
Run Code Online (Sandbox Code Playgroud)

底部的行数完全随机,唯一的注释是它们之前的空行。

Pandas 有一个参数“skipfooter”,用于忽略页脚中已知的行数。

关于如何在不实际打开 (open()...) 文件并删除它们的情况下忽略这些行的任何想法?

ami*_*min 5

没有任何选项可以read_csv通过获取第一个空行来终止函数。该模块无法根据所需条件接受/拒绝线路。它只能忽略空行(可选)或不符合数据形成形状的行(具有更多分隔符的行)。

您可以通过以下方法标准化数据(无需解析文件 - pure pandas):

  1. 了解所需\垃圾数据行的数量。[手动的]

    pd.read_csv('file.csv', nrows=3)或者pd.read_csv('file.csv', skipfooter=4)

  2. 通过消除 中的其他数据来保留所需的数据DataFrame。[自动的]

    df.dropna(axis=0, how='any', inplace=True)

结果将是:

  header1 header2 header3
0   val11   val12   val13
1   val21   val22   val23
2   val31   val32   val33
Run Code Online (Sandbox Code Playgroud)


Pat*_*ugh 2

如果您正在使用该csv模块,那么检测空行是相当简单的。

import csv 

with open(filename, newline='') as f:
    r = csv.reader(f)
    for l in r:
        if not l:
            break
        #Otherwise, process data
Run Code Online (Sandbox Code Playgroud)