基于Pandas实现相似词匹配并生成新列的技术需求
Pandas核心词匹配:适配带符号/后缀的名称场景
当前代码的c in x子串匹配逻辑无法精准满足需求——它可能漏匹配前缀核心词(如KCE13P2302A需同时匹配K和KCE),或误匹配非核心的中间子串。我们需要调整逻辑,只提取作为前缀或被符号分割的独立部分的核心词。
解决方案代码
import pandas as pd import re 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) # 匹配逻辑:核心词是前缀,或为符号分割后的独立部分 df['similar_words'] = df['col_one'].apply( lambda x: [c for c in list20 if x.startswith(c) or c in re.split(r'[^a-zA-Z0-9]', x)] ) print(df)
逻辑说明
x.startswith(c):捕获所有作为前缀的核心词,比如WPH会匹配W、WP、WPH;KCE13P2302A会匹配K、KCE。re.split(r'[^a-zA-Z0-9]', x):将字符串按非字母数字字符(如-)分割,匹配分割后的独立核心词,比如YGG-W1会匹配YGG,OOP-R会匹配OOP。
关键结果示例
| col_one | similar_words |
|---|---|
| WPH | ['WP', 'W', 'WPH'] |
| KCE13P2302A | ['K', 'KCE'] |
| YGG-W1 | ['YGG'] |
| WHAUP | ['WHA', 'WHAUP'] |
内容的提问来源于stack exchange,提问作者T_Ner
相关产品推荐
相关产品推荐

