如何在Pandas DataFrame中提取公司名,排除后缀并保留例外词
提取Pandas DataFrame中的核心公司名称(支持例外词保留)
直接上可运行的解决方案,适配你的需求:
步骤1:准备数据与导入依赖
import pandas as pd # 构造你的示例数据 data = { 'company_name': [ 'PwC advisory', 'PwC accounting', 'American airlines', 'McDonalds Boston', 'McDonalds Washington', 'Spirit airlines' ] } df = pd.DataFrame(data)
步骤2:定义例外列表并构建正则规则
# 放入需要保留的后缀词,后续可直接添加扩展 exception_words = ['airlines'] # 构建正则模式:优先匹配「核心名+例外词」,匹配不到则仅提取第一个核心词 pattern = r'^(\w+ (?:{}))|^(\w+)'.format('|'.join(exception_words)) # 提取核心名称并合并结果 df['core_company'] = df['company_name'].str.extract(pattern).bfill(axis=1).iloc[:, 0]
最终结果
运行后df['core_company']的输出为:
0 PwC 1 PwC 2 American airlines 3 McDonalds 4 McDonalds 5 Spirit airlines Name: core_company, dtype: object
逻辑说明
- 正则规则里的
^(\w+ (?:{}))负责匹配带例外词的完整组合(比如American airlines),(?:...)是避免生成多余捕获组的语法; |^(\w+)是兜底规则,当名称后缀不在例外列表里时,仅提取第一个单词作为核心名;bfill(axis=1)是把两个捕获组的结果合并,取第一个非空值,确保每个行都有结果;- 如果后续要新增例外词,直接往
exception_words列表里加即可,比如添加'group'就能保留'XYZ group'这类名称。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

