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

使用zip方法替换DataFrame列中子串无效的技术求助

替换无效的原因

pandas 默认的 Series.replace() 是全字符串匹配模式,只有当单元格的完整内容和你要替换的字符串完全一致时才会生效。但你的 EVENT_DTL 列是包含多行信息的长文本,발견장소_1 这类字符串只是其中的一段子串,全匹配模式根本找不到目标,所以替换没反应。

解决办法

给 replace() 加上 regex=True 参数,开启正则匹配模式,这样就能识别单元格里的子串了:

# 先定义替换规则字典
replace_rules = dict(zip(
    ['발견장소_1','발견장소_2','발견장소_3','발견장소_4','발견장소_5','발견장소_6','발견장소_7','발견장소_8','발견장소_9'],
    ['자택','친척 집','지인 집','학교 혹은 직장','공공장소','숙박업소','교외 혹은 야산','병원','']
))

# 开启正则匹配执行子串替换
df['EVENT_DTL'] = df['EVENT_DTL'].replace(replace_rules, regex=True)

也可以用 str.replace() 方法,它默认支持正则匹配:

df['EVENT_DTL'] = df['EVENT_DTL'].str.replace(replace_rules, regex=True)
验证效果

替换完成后再运行:

print(df.loc[2143,'EVENT_DTL'])

就能看到 발견장소_1 被替换成 자택,其他匹配的子串也会按规则替换。

补充说明
  • 你的替换规则里最后一项是空字符串,会直接删掉 발견장소_9 这段内容,完全符合需求。
  • 如果后续替换规则里包含正则特殊字符(比如 *、+),需要用 re.escape() 转义,但这次的 발견장소_* 里的 _ 不是特殊字符,不用额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:10:38