繁体   English   中英

剂量 pd.read_csv skiprows 参数是否支持跳过空行?

[英]Dose pd.read_csv skiprows parameter support skip empty lines?

我有一个 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 行是 header。

第 13 行之后的行是数据。

我想把它读成 dataframe 并做一些分析。

为此,我必须:

  • 将第 7 行设置为 header
  • 跳过第 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 function 时,将 header 参数设置为 3,并将 skiprows 参数设置为 7,我得到了这个结果(即使我需要在 Z099FB995346F33E95EZ6 行之后应用 skiprow)。

header 已经忽略了 header 之前的空行,但是skirows 不能忽略之前的空行。

结论

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

如果可能的话,我只需要知道 header 行号之后的跳过数,而忽略从顶部开始计算的需要。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM