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

如何用Pandas结合正则按另一列条件替换字符串列结尾指定子串

错误原因

str.replace() 方法必须传入「匹配规则」和「替换为的内容」两个必填参数,你的代码里只写了正则匹配规则,没指定替换目标值,所以触发参数缺失报错。另外你写的正则规则也存在问题:仅给最后一个Inc加了行尾匹配符$,会导致其他后缀匹配到字符串中间的内容,同时正则里的.没有转义,会匹配任意字符,不符合「仅匹配结尾后缀」的需求。

正确实现代码

首先修正正则规则,统一匹配结尾的4种后缀,同时自动去掉后缀前的空格:

import pandas as pd

# 构造示例数据集
data = {
    'id': [1,2,3,4,5],
    'company name': ['Finl Corp.', 'Fund Tr Corp', 'Inc Invt Fd', 'Govt Fd Inc.', 'Trinity Inc'],
    'value': [7,6,5,3,5]
}
df = pd.DataFrame(data)

# 1、先初始化简洁名称列为原公司名,保证不符合条件的行保持原值
df['company_name_concise'] = df['company name']

# 2、构造过滤条件
mask = df['value'] >=5

# 3、对符合条件的行做后缀替换
df.loc[mask, 'company_name_concise'] = df.loc[mask, 'company name'].str.replace(
    r'\s*(Corp\.?|Inc\.?)$', # 匹配结尾的Corp、Corp.、Inc、Inc.以及前面的空格
    '', # 替换为空字符串
    regex=True
)

输出结果验证

运行后得到的结果和预期完全一致:

id  company name  value company_name_concise
0   1    Finl Corp.      7                 Finl
1   2  Fund Tr Corp      6              Fund Tr
2   3   Inc Invt Fd      5          Inc Invt Fd
3   4  Govt Fd Inc.      3         Govt Fd Inc.
4   5   Trinity Inc      5              Trinity

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:54:04