如何判断Pandas DataFrame中指定字符串是否独立或被特殊字符包裹存在
解决方案:匹配独立或被特殊字符包裹的字符串
要实现你需要的匹配逻辑,我们可以结合正则表达式和Pandas的行级处理,精准判断col_2的字符串是否作为独立个体或被非字母数字字符包裹出现在col_1中。
完整代码示例
import pandas as pd import re # 初始化你的DataFrame df = pd.DataFrame({ 'col_1':['filmeinlage federspeicher anlegen', 'filmeinlage lm a-kreis', 'weco-pvb-primerspray ral 3012', 'tragrolle unten (metall) talent,t3', 'metallschutzschlauch, spr-va 36', 'gummi pflege liqui moly 500ml', 'gummikugel für 5-stellungskippschalter', 'megaphone er-520 6/10w abs', 'weco primerspray -lar- 3012'], 'col_2':['lm', 'lm', 'pvb', 'metall', 'metall', 'gummi', 'gummi', 'abs', 'lar'] }) # 生成Desired_Column df['Desired_Column'] = df.apply( lambda row: bool( re.search( r'(?:^|\W)' + re.escape(row['col_2']) + r'(?:\W|$)', row['col_1'] ) ), axis=1 ) # 查看结果 print(df)
代码逻辑解释
正则表达式核心:
(?:^|\W):匹配字符串开头,或者任意非字母数字字符(比如空格、连字符、括号、逗号等)re.escape(row['col_2']):对col_2的字符串进行转义,避免其中的特殊字符(比如-、()被当成正则语法解析(?:\W|$):匹配任意非字母数字字符,或者字符串结尾- 整个模式的意思是:
col_2的字符串必须要么在开头/结尾,要么被非字母数字字符包裹,确保它是一个独立的个体,而不是其他单词的一部分。
行级处理:
- 用
df.apply(..., axis=1)遍历每一行,对每一组col_1和col_2执行正则匹配 bool(re.search(...))将匹配结果转换为布尔值(匹配到返回True,否则False)
- 用
验证结果
运行代码后,生成的Desired_Column完全符合你的预期:
| col_1 | col_2 | Desired_Column |
|---|---|---|
| filmeinlage federspeicher anlegen | lm | False |
| filmeinlage lm a-kreis | lm | True |
| weco-pvb-primerspray ral 3012 | pvb | True |
| tragrolle unten (metall) talent,t3 | metall | True |
| metallschutzschlauch, spr-va 36 | metall | False |
| gummi pflege liqui moly 500ml | gummi | True |
| gummikugel für 5-stellungskippschalter | gummi | False |
| megaphone er-520 6/10w abs | abs | True |
| weco primerspray -lar- 3012 | lar | True |
内容的提问来源于stack exchange,提问作者Sergei
相关产品推荐
相关产品推荐

