Python pd.read\u csv skiprows参数是否支持跳过空行?

Python pd.read\u csv skiprows参数是否支持跳过空行?,python,pandas,Python,Pandas,我有一个csv文件,如下所示: SUMMARY OF SURFACE ENERGY BALANCE INCOMING NET SOLAR RADIATION BY MATERIAL NET LONG-WAVE RADIATION BY MATERIA

我有一个csv文件,如下所示:


                                                               SUMMARY OF SURFACE ENERGY BALANCE


              INCOMING                NET SOLAR RADIATION BY MATERIAL                               NET LONG-WAVE RADIATION BY MATERIAL
               SOLAR   REFLECTED ------------------------------------------  INCOMING OUTGOING   -----------------------------------------
 DAY HR  YR   ON SLOPE   SOLAR   CANOPY     SNOW   RESIDUE    SOIL    TOTAL  LONGWAVE LONGWAVE   CANOPY    SNOW   RESIDUE    SOIL    TOTAL  SENSIBLE  LATENT    SOIL
                 W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2     W/M2




 338 24   86     30.8      5.6     19.4      0.0      5.4      0.5     25.3    290.6    317.5    -16.4      0.0     -6.3     -4.1    -26.9     -4.7     -0.8     -6.8
 339 24   86     11.6      5.6      4.8      1.2      0.0      0.0      6.0    301.5    311.4     -5.2     -3.5     -0.4     -0.7     -9.9      1.3     -0.1     -7.1

...
文件的第1、3、4、10、11和12行为空

第7行是标题

第13行之后的一行是数据

我想把它读入一个数据框并做一些分析

为此,我必须:

  • 将第7行设置为标题
  • 跳过第8行(不是数据行)
如果我使用此代码,可以得到正确的结果:

将熊猫作为pd导入
df=pd.read\u csv(路径,头=3,skiprows=[7])
打印(df.head())
它将像这样打印:

   DAY HR  YR   ON SLOPE   SOLAR   CANOPY     SNOW   RESIDUE    SOIL    TOTAL  LONGWAVE LONGWAVE   CANOPY    SNOW   RESIDUE    SOIL    TOTAL  SENSIBLE  LATENT    SOIL
0   338 24   86     30.8      5.6     19.4      0...                                                                                                                  
1   339 24   86     11.6      5.6      4.8      1...                                                                                                                  
2   340 24   86     22.2     18.5      0.0      3...                                                                                                                  
3   341 24   86     22.8     18.7      0.0      4...                                                                                                                  
4   342 24   86     48.4     37.0      4.4      7...   
但是,当我调用read_csv函数时,将header参数设置为3,并将skiprows参数设置为7,我会得到这个结果(即使我需要skiprow仅在header行之后应用)

标头已忽略标头之前的空行,但skiprows无法忽略将跳过其之前的空行

结论

所以我想知道skiprows参数可以忽略空行吗


如果可能的话,我只需要知道页眉行数之后的Skiprow数,并忽略从顶部计数的需要。

我快速查看了一下,似乎没有,原因是当参数
skip_blank_lines
设置为
True
(默认情况下)时,
页眉
忽略行,但是
skiprows
没有考虑该参数

但是,您可以在不使用
skiprows
参数的情况下读取,然后删除
na

df = pd.read_csv(path, header=3, skip_blank_lines=True).dropna()

但老实说,这可能不是一个好主意,因为对于具有
na
值的受影响列,数据类型将设置为
objects

我会对此进行测试,但此结果包含我希望忽略的行。如何?如果数据不完整,则某些列将为nan值,这些值将被删除,但在这一阶段,无法更改第8行的beahvior。如果要删除该行,则必须设置skiprows参数。该行没有每列的值,因此它将在末尾包含
nan
值,
read\u csv
正在删除nan值,这将删除整行,但是,如果您不想使用
skiprows
,这只是一个原始解决方案。
df = pd.read_csv(path, header=3, skip_blank_lines=True).dropna()