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)