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

Pandas列表关键词匹配问题:提取带后缀的前缀关键词至新列

问题分析

你需要实现前缀匹配:仅当col_one的字符串以list20中的关键词为开头(关键词后可跟任意字符)时,将对应关键词填入新列,且需优先匹配最长的关键词(比如WHAUP要优先于WHA,避免短关键词提前匹配)。

原代码的核心问题:

  • 未限制匹配必须从字符串开头开始,导致非前缀的关键词也会被匹配
  • 未处理关键词优先级,短关键词会优先于长关键词被匹配(比如WHAUP会被错误匹配为WHA)
  • 部分代码只是检查关键词是否存在于字符串中,而非前缀匹配
正确解决方案

步骤1:先对关键词列表排序

将list20按关键词长度降序排序,确保长关键词先被匹配,避免短关键词抢占匹配:

sorted_list = sorted(list20, key=lambda x: -len(x))

方法1:使用Pandas字符串提取(推荐,效率更高)

利用正则^符号限制匹配开头,结合排序后的关键词构建正则表达式:

import pandas as pd

list20 = ['ZEN', 'OOP', 'WICE', 'XO', 'WP', 'K', 'WGE', 'YGG', 'W', 'YUASA', 'XPG',  'ABC', 'WHA', 'WHAUP', 'WFX', 'WINNER', 'WIIK', 'WIN', 'YONG', 'WPH', 'KCE']
data = {"col_one": ["ZEN", "WPH", "WICE", "YONG", "K", "XO", "WIN", "WP", "WIIK", "YGG-W1", "W-W5", "WINNER", "YUASA", "WGE", "WFX", "XPG", "WHAUP", "WHA", "KCE13P2302A", "OOP-R"]}
df = pd.DataFrame(data)

# 按关键词长度降序排序
sorted_list = sorted(list20, key=lambda x: -len(x))
# 构建前缀匹配正则
pattern = f"^({'|'.join(sorted_list)})"
# 提取匹配的前缀关键词
df['new_col'] = df['col_one'].str.extract(pattern)[0]

方法2:自定义匹配函数(逻辑更直观)

通过startswith检查前缀,遍历排序后的关键词:

import pandas as pd

list20 = ['ZEN', 'OOP', 'WICE', 'XO', 'WP', 'K', 'WGE', 'YGG', 'W', 'YUASA', 'XPG',  'ABC', 'WHA', 'WHAUP', 'WFX', 'WINNER', 'WIIK', 'WIN', 'YONG', 'WPH', 'KCE']
data = {"col_one": ["ZEN", "WPH", "WICE", "YONG", "K", "XO", "WIN", "WP", "WIIK", "YGG-W1", "W-W5", "WINNER", "YUASA", "WGE", "WFX", "XPG", "WHAUP", "WHA", "KCE13P2302A", "OOP-R"]}
df = pd.DataFrame(data)

# 按关键词长度降序排序
sorted_list = sorted(list20, key=lambda x: -len(x))

def match_prefix(string):
    for keyword in sorted_list:
        if string.startswith(keyword):
            return keyword
    return 'na'  # 无匹配时返回值

df['new_col'] = df['col_one'].apply(match_prefix)

最终输出结果

两种方法都会得到符合预期的结果:

col_onenew_col
ZENZEN
WPHWPH
WICEWICE
YONGYONG
KK
XOXO
WINWIN
WPWP
WIIKWIIK
YGG-W1YGG
W-W5W
WINNERWINNER
YUASAYUASA
WGEWGE
WFXWFX
XPGXPG
WHAUPWHAUP
WHAWHA
KCE13P2302AKCE
OOP-ROOP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:05:18