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

如何使用Pandas布尔掩码筛选数据类型?过滤含字符串与NaN的列

按数据类型筛选并过滤混合字符串与NaN列的NaN值

当然可以实现,操作起来还挺直接的。这类同时包含字符串和NaN的列,在Pandas里的 dtype 通常是object(因为NaN本质是浮点型,和字符串混合后列会被转为object类型),我们可以结合这个特点来处理:

单个目标列的处理

如果已经明确要处理的列,直接用notna()生成布尔掩码过滤即可,它能准确识别NaN值,保留非空的字符串:

# 过滤整个DataFrame,只保留目标列非NaN的行
filtered_df = df[df['your_column'].notna()]

# 或者单独提取该列的非NaN值
non_nan_values = df['your_column'].dropna()

批量处理符合条件的列

如果要批量处理所有混合字符串和NaN的列(即dtype为object且包含NaN的列),可以先筛选出这类列,再统一过滤:

import pandas as pd

# 筛选出符合条件的列:object类型且包含NaN
target_cols = [col for col in df.columns 
               if df[col].dtype == 'object' and df[col].isna().any()]

# 过滤所有目标列都不为NaN的行(如果要保留任一非NaN,可调整逻辑)
filtered_df = df.dropna(subset=target_cols)

注意点

如果你的列里存在字符串形式的"NaN"(不是Pandas识别的真正NaN值),需要先把它们转为标准NaN再处理:

df['your_column'] = df['your_column'].replace('NaN', pd.NA)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:06:26