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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。