如何在 pandas.read_csv 上的 header 之前跳过未知数量的空行?
How to skip an unknown number of empty lines before header on pandas.read_csv?
我想从 header 不在第一行的 csv 文件中读取数据帧。例如:
In [1]: import pandas as pd
In [2]: import io
In [3]: temp=u"""#Comment 1
...: #Comment 2
...:
...: #The previous line is empty
...: Header1|Header2|Header3
...: 1|2|3
...: 4|5|6
...: 7|8|9"""
In [4]: df = pd.read_csv(io.StringIO(temp), sep="|", comment="#",
...: skiprows=4).dropna()
In [5]: df
Out[5]:
Header1 Header2 Header3
0 1 2 3
1 4 5 6
2 7 8 9
[3 rows x 3 columns]
上面代码的问题是我现在不知道 header 之前会有多少行,因此,我不能像这里那样使用 skiprows=4
。
我知道我可以遍历文件,如问题 Read pandas dataframe from csv beginning with non-fix header。
我正在寻找的是一个更简单的解决方案,比如让 pandas.read_csv
忽略任何空行并将第一个 non-empty 行作为 header.
您需要设置skip_blank_lines=True
df = pd.read_csv(io.StringIO(temp), sep="|", comment="#", skip_blank_lines=True).dropna()
我想从 header 不在第一行的 csv 文件中读取数据帧。例如:
In [1]: import pandas as pd
In [2]: import io
In [3]: temp=u"""#Comment 1
...: #Comment 2
...:
...: #The previous line is empty
...: Header1|Header2|Header3
...: 1|2|3
...: 4|5|6
...: 7|8|9"""
In [4]: df = pd.read_csv(io.StringIO(temp), sep="|", comment="#",
...: skiprows=4).dropna()
In [5]: df
Out[5]:
Header1 Header2 Header3
0 1 2 3
1 4 5 6
2 7 8 9
[3 rows x 3 columns]
上面代码的问题是我现在不知道 header 之前会有多少行,因此,我不能像这里那样使用 skiprows=4
。
我知道我可以遍历文件,如问题 Read pandas dataframe from csv beginning with non-fix header。
我正在寻找的是一个更简单的解决方案,比如让 pandas.read_csv
忽略任何空行并将第一个 non-empty 行作为 header.
您需要设置skip_blank_lines=True
df = pd.read_csv(io.StringIO(temp), sep="|", comment="#", skip_blank_lines=True).dropna()