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

2024-09-30 14:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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行(不是数据行)

如果我使用此代码,可以得到正确的结果:

import pandas as pd
df = pd.read_csv(path, header=3, skiprows=[7])
print(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的数量,忽略从顶部开始计数的需要


Tags: 文件csv数据标题totalheadercanopysnow
1条回答
网友
1楼 · 发布于 2024-09-30 14:32:26

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

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

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

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

相关问题 更多 >