DataFrame.dropna 函数是一个非常有用的工具,用于删除DataFrame中包含缺失值(通常表示为NaN)的行或列。这个函数提供了多种参数,使得用户可以根据不同的需求定制删除行为。本文主要介绍一下Pandas中pandas.DataFrame.dropna方法的使用。

DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)

删除缺失的值。

请参阅《用户指南》,以了解有关哪些值被认为缺失以及如何处理缺失数据的更多信息。

参数

axis : {0或'index',1或'columns'},默认0

确定是否删除包含缺失值的行或列。

    0或'index':删除包含缺失值的行。

    1或“列”:删除包含缺失值的列。

从0.23.0版开始不推荐使用:将元组或列表传递到多个轴上。

只允许一个轴。

how : {'any','all'},默认为'any'

当我们有至少一个NA或全部NA时,

确定是否从DataFrame中删除行或列。

    'any':如果存在任何NA值,则删除该行或列。

    'all':如果所有值均为NA,则删除该行或列。

thresh : int,可选

需要许多非NA值。

subset :类数组,可选

要考虑的其他轴上的标签,例如,如果要删除行,

这些标签将是要包括的列的列表。

inplace : bool,默认为False

如果为True,则执行就地操作并返回None

返回

DataFrame

删除了NA条目的DataFrame。

例子

1)删除包含缺失值的行

import pandas as pd
import numpy as np

# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, np.nan, 6]
})

# 删除包含缺失值的行
result = df.dropna()
print("删除包含缺失值的行:\n", result)

2)删除包含缺失值的列

import pandas as pd
import numpy as np

# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, np.nan, 6]
})

# 删除包含缺失值的列
result = df.dropna(axis=1)
print("删除包含缺失值的列:\n", result)

3)仅删除指定列中的缺失值行

import pandas as pd
import numpy as np

# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, np.nan, 6]
})

# 仅删除列 'A' 和 'B' 中包含缺失值的行
result = df.dropna(subset=['A', 'B'])
print("仅删除列 'A' 和 'B' 中包含缺失值的行:\n", result)

4)设置非缺失值阈值(thresh 参数)

import pandas as pd
import numpy as np

# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, np.nan, 6]
})

# 至少有 2 个非缺失值的行才保留
result = df.dropna(thresh=2)
print("至少有 2 个非缺失值的行才保留:\n", result)

5)在原 DataFrame 上删除缺失值

import pandas as pd
import numpy as np

# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
    'A': [1, 2, np.nan],
    'B': [np.nan, 3, 4],
    'C': [5, np.nan, 6]
})

# 在原 DataFrame 上删除包含缺失值的行
df.dropna(inplace=True)
print("在原 DataFrame 上删除缺失值后的结果:\n", df)

6)使用示例

import pandas as pd
import numpy as np

# 创建一个包含缺失值的 DataFrame
df = pd.DataFrame({
    "name": ['Alfred', 'Batman', 'Catwoman'],
    "toy": [np.nan, 'Batmobile', 'Bullwhip'],
    "born": [pd.NaT, pd.Timestamp("1940-04-25"), pd.NaT]
})
print("原始 DataFrame:\n", df)


# 删除所有元素均缺失的行
result3 = df.dropna(how='all')
print("\n删除所有元素均缺失的行:\n", result3)

# 仅保留至少具有 2 个非缺失值的行
result4 = df.dropna(thresh=2)
print("\n仅保留至少具有 2 个非缺失值的行:\n", result4)

# 定义在哪些列中查找缺失值(例如 'name' 和 'born' 列)
result5 = df.dropna(subset=['name', 'born'])
print("\n仅查找 'name' 和 'born' 列的缺失值:\n", result5)

# 在原 DataFrame 上删除缺失值的行,并将更改保存在同一变量中
df.dropna(inplace=True)
print("\n在原 DataFrame 上删除缺失值后的结果:\n", df)

推荐文档

相关文档

大家感兴趣的内容

随机列表