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

如何在pandas中使用另一列作为匹配模式执行字符串替换

报错原因

Series.str.replace() 方法的第一个参数要求传入单个字符串/正则表达式对象,不支持直接传入Series作为每行的匹配规则,因此会触发类型错误:

TypeError: 'Series' objects are mutable, thus they cannot be hashed

解决方案

方案1:按行apply(写法简洁)

通过指定axis=1对每行数据执行自定义替换逻辑,写法如下:

import pandas as pd
df = pd.DataFrame({'str1': ['abc','abcd','def'], 'str2': ['b','ab', 'ef']})
df['str1_replaced'] = df.apply(lambda x: x['str1'].replace(x['str2'], ''), axis=1)

如果你的str2列存在.、*这类正则特殊字符,不需要当作正则匹配时,可以显式指定regex=False避免意外解析。

方案2:列表推导式(性能更优)

对于数据量较大的场景,列表推导式的执行效率比apply更高,写法如下:

df['str1_replaced'] = [s1.replace(s2, '') for s1, s2 in zip(df['str1'], df['str2'])]

两种方案的输出结果均符合预期:

str1 str2 str1_replaced
0   abc    b            ac
1  abcd   ab            cd
2   def   ef             d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:54:00