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

Pandas如何按条件替换DataFrame列值并将非匹配值标记为Invalid

错误原因

str.replace()执行的是子串匹配替换,而非单元格整值匹配:只要字符串内包含目标字符就会触发替换。'2022'中包含3个'2'字符,第二次调用str.replace('2', 'ACTUADOR')时,三个'2'都会被替换,最终就得到了错误的ACTUADOR0ACTUADORACTUADOR。

正确实现方式

做整值匹配替换即可,同时给未匹配到规则的值统一填充"Invalid",两种常用写法都可以:

方法1:整值replace+fillna兜底

先定义值和替换结果的映射字典,匹配到的内容按字典替换,未匹配到的内容自动保留为空值,最后统一填充为"Invalid":

import pandas as pd
df = pd.DataFrame({'ID': [1,2,3,4,5],
                   'Name_columns': ['1', '2', '2022', '1', '1']})

replace_map = {
    '1': 'SENSOR',
    '2': 'ACTUATOR'  # 注意你之前代码里把ACTUATOR误写为ACTUADOR,这里按需求修正
}
df['Name_columns'] = df['Name_columns'].replace(replace_map).fillna('Invalid')

方法2:map映射+fillna兜底

逻辑和上述方法完全一致,写法更简洁:

df['Name_columns'] = df['Name_columns'].map(replace_map).fillna('Invalid')
最终运行结果

执行代码后输出结果完全符合需求:

ID Name_columns
0   1       SENSOR
1   2     ACTUATOR
2   3      Invalid
3   4       SENSOR
4   5       SENSOR

提示:str.replace()仅适用于替换字符串内部的特定子串场景,不要用来做整值的枚举替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:33:31