簡體   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