如何在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
相关产品推荐
相关产品推荐

