You need to enable JavaScript to run this app. 如何在Pandas DataFrame中按行通过正则匹配替换字符串指定部分
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中按行通过正则匹配替换字符串指定部分

解决方法

你可以直接通过简单的字符串判断+替换实现需求,有两种常用写法:

写法1:apply实现(适合小数据量)

df['final result'] = df['final result'].apply(lambda x: x if x == '|Other' else x.replace('|Other', ''))

写法2:向量化操作(适合大数据量,性能更高)

# 先筛选出值不等于|Other的行,只对这些行做替换
mask = df['final result'] != '|Other'
df.loc[mask, 'final result'] = df.loc[mask, 'final result'].str.replace(r'\|Other', '', regex=True)

原代码不生效的原因

  1. 你直接对df['final result']这个单列Series调用apply时,lambda接收的参数x就是每个单元格的字符串本身,不需要再写x['final result'],这是混淆了Series.apply和DataFrame.apply的用法,会直接触发KeyError。
  2. 原有逻辑和需求完全不符:你写的逻辑是「如果值等于|Other就替换成x,否则保留原值」,既没有做子串删除,判断规则也完全反过来了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 16:24:04