Pandas DataFrame.dropna(~) 方法刪除缺少值的行或列。
參數
1.axis | int 或 string | optional
是否刪除缺失值的行或列:
|
軸 |
說明 |
|---|---|
|
|
掃描每一行,如果存在缺失值,則刪除該行。 |
|
|
掃描每一列,如果存在缺失值,則刪除該列。 |
默認情況下,axis=0 。
2. how | string | optional
刪除行/列的標準:
|
如何 |
說明 |
|---|---|
|
|
如果該行或列至少包含一個缺失值,則將其刪除。 |
|
|
如果行或列包含所有缺失值,則將其刪除。 |
默認情況下,how="any" 。
3. thresh | int | optional
行/列必須至少包含非NaN 的數量才不會被刪除。例如,如果 thresh=2 ,那麽
-
具有 1 個非缺失值的列將被刪除。
-
將保留包含 2 個非缺失值的列。
-
將保留包含 3 個非缺失值的列。
默認情況下,沒有設置最小值。
4. subset | strings 的array-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 已被修改。
相關用法
- Python PySpark DataFrame dropna方法用法及代碼示例
- Python PySpark DataFrame drop方法用法及代碼示例
- Python PySpark DataFrame dropDuplicates方法用法及代碼示例
- Python Pandas DataFrame drop_duplicates方法用法及代碼示例
- Python Pandas DataFrame drop方法用法及代碼示例
- Python Pandas DataFrame droplevel方法用法及代碼示例
- Python PySpark DataFrame dtypes屬性用法及代碼示例
- Python Pandas DataFrame dtypes屬性用法及代碼示例
- Python Pandas DataFrame duplicated方法用法及代碼示例
- Python Pandas DataFrame diff方法用法及代碼示例
- Python Pandas DataFrame dot方法用法及代碼示例
- Python Pandas DataFrame describe方法用法及代碼示例
- Python PySpark DataFrame describe方法用法及代碼示例
- Python Pandas DataFrame div方法用法及代碼示例
- Python PySpark DataFrame distinct方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | dropna method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
