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

如何检查Pandas列值是否为字典键并将无效值替换为NA

解决方案

核心思路是用Pandas内置的isin()方法判断值是否在合法缩写集合中,不符合的直接替换为空值即可,无需做全称映射。

实现代码

假设你已定义好州缩写字典为state_dict,待处理的DataFrame为df:

import pandas as pd

# 1. 提取所有合法州缩写
valid_state_abbr = state_dict.keys()

# 2. 替换无效值为NA,合法值保留原值
# 方法1:where方法,写法简洁
df["LOSS STATE"] = df["LOSS STATE"].where(df["LOSS STATE"].isin(valid_state_abbr), pd.NA)

# 方法2:loc索引实现,逻辑更直观
# df.loc[~df["LOSS STATE"].isin(valid_state_abbr), "LOSS STATE"] = pd.NA

可选优化

如果你的数据可能存在大小写不统一、首尾带空格的问题,可以先清洗数据再做判断,避免合法值被误判:

# 先去除首尾空格+统一转大写,再做判断
df["LOSS STATE"] = df["LOSS STATE"].str.strip().str.upper().where(
    df["LOSS STATE"].str.strip().str.upper().isin(valid_state_abbr), 
    pd.NA
)

效果验证

按照你给出的示例数据运行后,索引为5的Nonsense会被替换为NA,其余合法缩写全部保留原有值,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:06:08