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

如何使用Pandas从数据集列中提取全大写单词或词组?

提取文本中的全大写品牌名

需求说明

给定如下数据集列:

col
AMPCO Impact Socket
MEGGAR HARLEY Impact Socket

需要提取每行开头的全大写内容,目标结果为AMPCO、MEGGAR HARLEY(或仅提取单个全大写单词如MEGGAR)。

问题分析

你之前尝试的res = list(filter(lambda c: c.isupper(), test_str[:1]))存在两个核心问题:

  • 仅截取字符串第一个字符判断,覆盖范围过窄
  • 逐个字符筛选,无法识别由空格分隔的多个全大写单词

解决方案

方法1:正则表达式(推荐)

利用正则匹配开头的连续全大写单词序列(支持空格分隔的多个全大写单词):

import re

# 待处理数据
texts = ["AMPCO Impact Socket", "MEGGAR HARLEY Impact Socket"]

# 匹配开头的一个/多个全大写单词(允许单词间有空格)
pattern = r'^([A-Z]+(?:\s[A-Z]+)*)'

extracted = [re.match(pattern, text).group(1) for text in texts if re.match(pattern, text)]
print(extracted)
# 输出: ['AMPCO', 'MEGGAR HARLEY']

如果仅需要提取第一个全大写单词(如第二行只取MEGGAR),修改正则为r'^([A-Z]+)'即可,输出会变为['AMPCO', 'MEGGAR']。

方法2:分割筛选

通过分割字符串,逐个判断单词是否全大写,直到遇到非全大写单词为止:

texts = ["AMPCO Impact Socket", "MEGGAR HARLEY Impact Socket"]

extracted = []
for text in texts:
    words = text.split()
    brand_parts = []
    for word in words:
        if word.isupper():
            brand_parts.append(word)
        else:
            break
    extracted.append(' '.join(brand_parts))

print(extracted)
# 输出: ['AMPCO', 'MEGGAR HARLEY']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 21:05:21