首页 > 解决方案 > 检查是否在另一列中找到了一次列中的字符串之一

问题描述

我试图通过创建新列来检查列中的字符串之一是否在列Name B中找到:Name AName Check

电流输入:

df = pd.DataFrame({"Name A":{"0":"John","1":"Sara","2":"Adam","3":"Ahmed"},
                   "Name B":{"0":"John, Geroge","1":"Ahemed, Sara","2":"Adam, Nadia","3":"Sara, John"},
                   "Salary":{"0":100,"1":200,"2":300,"3":400}})

    Name A  Name B        Salary
0   John    John, Geroge  100
1   Sara    Ahemed, Sara  200
2   Adam    Adam, Nadia   300
3   Ahmed   Sara, John    400

例外输出:

    Name A  Name B        Salary  Name Check
0   John    John, Geroge  100     True
1   Sara    Ahemed, Sara  200     True
2   Adam    Adam, Nadia   300     True
3   Ahmed   Sara, John    400     False
4   Nadi    Sara, Nadia   500     True
5   George  Georg, Mo     600     True

我尝试过的:

df['Name Check'] = df.apply(lambda x: x['Name B'] in x['Name A'] , axis=1)

但是输出都是False,不知道如何将 column 转换Name B为 list 并循环检查是否在 column 中找到Name A

标签: pandasdataframe

解决方案


这是一种使用带有单词边界的正则表达式的方法:

import re
df.apply(lambda r: bool(re.search(r'\b%s\b' % r['Name A'], r['Name B'])), axis=1)

说明:这为表单的每行定义了一个正则表达式\bJohn\b,以确保完成完全匹配


推荐阅读