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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。