Python 获取分析时熊猫中跳过的空行数

Python 获取分析时熊猫中跳过的空行数,python,pandas,Python,Pandas,我注意到熊猫在使用read\u excel/read\u csv时很聪明,它会跳过空行,因此如果我的输入有空行,如 Col1, Col2 Value1, Value2 它只是起作用,但有没有办法获得实际的跳过行数?(在本例中为1) 我想将数据框行号绑定回原始输入文件的行号。您可以使用跳过空白行=False并导入整个文件,包括空行。然后,您可以检测它们、计数它们并过滤掉它们: def custom_read(f_name, **kwargs): df = pd.read_csv(f_n

我注意到熊猫在使用
read\u excel
/
read\u csv
时很聪明,它会跳过空行,因此如果我的输入有空行,如


Col1, Col2
Value1, Value2
它只是起作用,但有没有办法获得实际的跳过行数?(在本例中为1)


我想将数据框行号绑定回原始输入文件的行号。

您可以使用
跳过空白行=False
并导入整个文件,包括空行。然后,您可以检测它们、计数它们并过滤掉它们:

def custom_read(f_name, **kwargs):
    df = pd.read_csv(f_name, skip_blank_lines=False, **kwargs)

    non_empty = df.notnull().all(axis=1)
    print('Skipped {} blank lines'.format(sum(~non_empty)))

    return df.loc[non_empty, :]

您还可以使用
csv.reader
逐行导入文件,并且只允许非空行:

import csv

def custom_read2(f_name):
    with open(f_name) as f:
        cont = []
        empty_counts = 0

        reader = csv.reader(f, delimiter=',')
        for row in reader:
            if len(row) > 0:
                cont.append(row)
            else:
                empty_counts += 1
        print('Skipped {} blank lines'.format(empty_counts))
        return pd.DataFrame(cont)

据我所知,一次最多只有一行空白会占据你的记忆。如果您碰巧有很多空行的大文件,这可能会很有用,但我非常确定选项1在实践中始终是更好的选项

计算文件中的行数,并与文档中DataFrame中的行进行比较看起来有一个名为
skip_blank_line的参数:如果为真,跳过空行,而不是解释为NaN值
。所以,如果它不是一个大文件,你可以再次读取它并比较你所拥有的?