當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python Pandas DataFrame dropna方法用法及代碼示例

Pandas DataFrame.dropna(~) 方法刪除缺少值的行或列。

參數

1.axis | intstring | optional

是否刪除缺失值的行或列:

說明

0"index"

掃描每一行,如果存在缺失值,則刪除該行。

1"columns"

掃描每一列,如果存在缺失值,則刪除該列。

默認情況下,axis=0

2. how | string | optional

刪除行/列的標準:

如何

說明

"any"

如果該行或列至少包含一個缺失值,則將其刪除。

"all"

如果行或列包含所有缺失值,則將其刪除。

默認情況下,how="any"

3. thresh | int | optional

行/列必須至少包含非NaN 的數量才不會被刪除。例如,如果 thresh=2 ,那麽

  • 具有 1 個非缺失值的列將被刪除。

  • 將保留包含 2 個非缺失值的列。

  • 將保留包含 3 個非缺失值的列。

默認情況下,沒有設置最小值。

4. subset | stringsarray-like | optional

逐行執行掃描時(當 axis=0 時)檢查缺失值的列。默認情況下,會考慮所有列。請參閱下麵的示例以進行說明。

5. inplace | boolean | optional

  • 如果是True,那麽該方法將直接修改源DataFrame,而不是創建新的DataFrame。

  • 如果是False,則將創建並返回一個新的DataFrame。

默認情況下,inplace=False

返回值

DataFrame,其中包含根據提供的參數刪除的缺失值的行或列。

例子

考慮以下 DataFrame :

df = pd.DataFrame({"A":[pd.np.NaN,2],"B":[3,4],"C":[5,6]})
df



   A    B  C
0  NaN  3  5
1  2.0  4  6

刪除缺失值的行

要刪除缺少值的行:

df.dropna()   # or axis=0 or axis="index"



   A    B  C
1  2.0  4  6

請注意第一行(即 index=0 )如何被刪除,因為它包含缺失值。

刪除缺失值的列

要刪除缺少值的列:

df.dropna(axis="columns")   # or axis=1



   B  C
0  3  5
1  4  6

請注意A 列由於包含缺失值而被刪除。

刪除包含所有缺失值的列

考慮以下 DataFrame :

df = pd.DataFrame({"A":[pd.np.NaN,2], "B":[3,4], "C":[pd.np.NaN,pd.np.NaN]})
df



   A    B  C
0  NaN  3  NaN
1  2.0  4  NaN

要刪除值全部為缺失值的列,請設置 how="all"

df.dropna(how="all" axis="columns")



   A    B
0  NaN  3
1  2.0  4

請注意如何僅刪除 C 列,因為它僅包含缺失值。

設置閾值

考慮以下 DataFrame :

import numpy as np
df = pd.DataFrame({"A":["a",np.nan,np.nan],"B":[3,4,np.nan]})
df



   A    B
0  a    3.0
1  NaN  4.0
2  NaN  NaN

要刪除至少包含 2 個非 NaN 值的列,請設置 thresh=2

df.dropna(thresh=2, axis=1)



   B
0  3.0
1  4.0
2  NaN

請注意,隻有一個非缺失值的列 A 被刪除,而具有 2 個非缺失值的列 B 被保留。

僅刪除某些列缺失值的行

考慮以下 DataFrame :

df = pd.DataFrame({"A":[pd.np.NaN,2], "B":[3,4], "C":[pd.np.NaN,pd.np.NaN]})
df



   A    B  C
0  NaN  3  NaN
1  2.0  4  NaN

要刪除缺少與 A 列對應的值的行:

df.dropna(subset=["A"], axis="index")



   A    B  C
1  2.0  4  NaN

請注意,盡管兩行都包含缺失值,但僅刪除了第一行 (index=0)。這是因為,通過指定 subset=["A"] ,該方法僅檢查 A 列中的缺失值。

僅刪除某些行的缺失值的列

考慮以下 DataFrame :

df = pd.DataFrame({"A":[pd.np.NaN,2], "B":[3,4], "C":[5,6]})
df



   A    B  C
0  NaN  3  5
1  2.0  4  6

要刪除缺少與行索引 1 對應的值的列:

df.dropna(subset=[1], axis=1)   # or axis="columns"



   A    B
0  NaN  3
1  2.0  4

請注意,盡管 A 列也包含缺失值,但僅刪除了 C 列。這是因為通過指定 subset=[1] ,該方法將僅檢查行 index=1(即第二行)處的缺失值。由於與 index=1 行中的列 C 對應的值是缺失值,因此該方法刪除了列 C

就地刪除行/列

要就地刪除行或列,我們需要設置 inplace=True 。這將直接修改源DataFrame,而不是創建並返回新的 DataFrame。

作為示例,請考慮以下 DataFrame:

df = pd.DataFrame({"A":[pd.np.NaN,2], "B":[3,4], "C":[5,6]})
df



   A    B  C
0  NaN  3  5
1  2.0  4  6

我們使用 inplace=True 刪除包含缺失值的所有行:

df.dropna(inplace=True)
df



   A    B  C
1  2.0  4  6

如輸出所示,源 DataFrame 已被修改。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | dropna method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。