簡體   English   中英

Pandas - 刪除只有 NaN 值的行

[英]Pandas - Delete Rows with only NaN values

我有一個包含許多 NaN 值的 DataFrame。 我想刪除包含太多 NaN 值的行; 特別是:7個或更多。

我嘗試以多種方式使用dropna函數,但很明顯它會貪婪地刪除包含任何NaN 值的列或行。

這個問題( Slice Pandas DataFrame by Row )告訴我,如果我可以編譯一個包含太多 NaN 值的行列表,我可以用一個簡單的方法將它們全部刪除

df.drop(rows)

我知道我可以使用count函數計算非空值,我可以將它們從總數中減去並以這種方式獲得 NaN 計數(是否有直接的方法來計算連續的 NaN 值?)。 但即便如此,我還是不確定如何編寫一個逐行遍歷 DataFrame 的循環。

這是我認為正確的一些偽代碼:

### LOOP FOR ADDRESSING EACH row:
    m = total - row.count()
    if (m > 7):
        df.drop(row)

我還是 Pandas 的新手,所以我對解決這個問題的其他方法非常開放; 無論它們是更簡單還是更復雜。

基本上這樣做的方法是確定 cols 的數量,設置非 nan 值的最小數量並刪除不符合此條件的行:

df.dropna(thresh=(len(df) - 7))

查看文檔

df.dropna的可選 thresh 參數允許您為其提供最小數量的非 NA 值以保留該行。

df.dropna(thresh=df.shape[1]-7)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM