You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中删除含缺失值的列,仅保留指定列Age?

解决方法:保留Age列并删除其他含缺失值的列

嘿,这个需求很好实现,我给你两种靠谱的方法,都能帮你得到只包含Name和Age的DataFrame:

方法一:精准定位要删除的列

这种方法最直接,先找出所有有缺失值的列,然后排除Age,只删掉剩下的那些列:

import pandas as pd

# 先构造你的示例DataFrame(方便测试)
df = pd.DataFrame({
    'Age': [25, None, 30, 35],
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Sex': ['F', None, 'M', None]
})

# 第一步:找出所有存在缺失值的列
cols_with_na = df.columns[df.isna().any()]
# 第二步:排除'Age',得到真正需要删除的列
cols_to_drop = cols_with_na.difference(['Age'])
# 第三步:删除这些列
result_df = df.drop(cols_to_drop, axis=1)

print(result_df)

解释:

  • df.isna().any() 会返回一个布尔系列,标记每一列是否存在缺失值
  • 用df.columns[...]提取出所有有缺失的列,再通过difference(['Age'])把Age排除在外,这样就只留下了Sex(也就是你要删除的列)
  • 最后用drop()删除目标列,就得到了Name和Age的DataFrame

方法二:拆分合并法

如果你觉得上面的步骤有点绕,也可以把Age列单独拎出来,处理剩下的列后再合并回去:

import pandas as pd

df = pd.DataFrame({
    'Age': [25, None, 30, 35],
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Sex': ['F', None, 'M', None]
})

# 提取Age列单独保存
age_column = df['Age']
# 剩下的列删除所有含缺失值的列(这里会删掉Sex,保留Name)
cleaned_other_cols = df.drop('Age', axis=1).dropna(axis=1)
# 合并Age列和处理后的其他列
result_df = pd.concat([cleaned_other_cols, age_column], axis=1)

print(result_df)

解释:

  • 先把Age列单独拿出来,避免被后续的dropna()误删
  • 对剩下的列执行dropna(axis=1),自动删除所有有缺失值的列(这里就是Sex)
  • 最后用pd.concat()把Name列和Age列合并,得到目标结果

这两种方法都能完美满足你的需求,你可以根据自己的习惯选择~

内容的提问来源于stack exchange,提问作者Rustem Sadykov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:02:50