DataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)
删除缺失的值。
请参阅《用户指南》,以了解有关哪些值被认为缺失以及如何处理缺失数据的更多信息。
参数: | axis : { 确定是否删除包含缺失值的行或列。 0或'index':删除包含缺失值的行。 1或“列”:删除包含缺失值的列。 从0.23.0版开始不推荐使用:将元组或列表传递到多个轴上。 只允许一个轴。 how : {' 当我们有至少一个NA或全部NA时, 确定是否从DataFrame中删除行或列。 'any':如果存在任何NA值,则删除该行或列。 'all':如果所有值均为NA,则删除该行或列。 thresh : 需要许多非NA值。 subset :类数组,可选 要考虑的其他轴上的标签,例如,如果要删除行, 这些标签将是要包括的列的列表。 inplace : 如果为 |
返回: | 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)