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

如何用DataFrame另一列替换某列固定格式字符?解决TypeError报错

解决Pandas中用另一列内容替换指定格式字符的报错问题

问题背景

需要在Pandas的DataFrame中,用edit列的内容替换original列里符合<\w+/>格式的字符(比如<Isis/>)。例如将目标文本中的<Isis/>替换为twins,得到结果:

France is ‘ hunting down its citizens who joined twins ’ without trial in Iraq

但运行现有代码时触发错误:

TypeError: replace() argument 1 must be str, not None

错误原因

  1. p.match(x['original'])返回的是**正则匹配对象(Match Object)**或None,而字符串的replace()方法第一个参数要求是字符串类型,类型不匹配导致报错。
  2. match()方法仅匹配字符串开头的内容,如果目标格式不在字符串开头,会直接返回None,同样引发错误。

修正方案

使用re.sub()方法直接处理正则替换,它可以识别正则模式并将匹配到的内容替换为指定值,同时兼容无匹配的场景。

修正后代码

import pandas as pd
import re

df = pd.read_csv('train.csv')

# 定义匹配<\w+/>格式的正则模式
pattern = re.compile(r'<\w+/>')

# 使用re.sub完成替换,无匹配时返回原字符串
df['original'] = df.apply(
    lambda x: pattern.sub(str(x['edit']), x['original']),
    axis=1
)

print(df.head())

代码说明

  • pattern.sub(repl, string)会在string中查找所有匹配pattern的内容,并用repl(即edit列的内容)替换。
  • 如果original列中没有符合格式的字符,sub()会直接返回原字符串,避免报错。
  • 用str(x['edit'])确保替换值是字符串类型,防止edit列存在非字符串数据时出现问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:40:28