我正在尝试查看python数据框中的colB中是否包含来自colA的任何单词。
示例数据
ColA ColB Match
this is some text some text TRUE
some more text more TRUE
another line text nothing to see FALSE
my final line dog cats goats FALSE
desc拆分字符串,emp拆分字符串 如果emp中的任何单词= desc中的任何单词,则为true,否则为false
类似...
df['Match'] = df['colA'].str.split().apply(lambda x: 'true' if any x in df['ColB'].str.split() else 'false')
thx
答案 0 :(得分:2)
您可以在整个行上使用apply,如下所示:
df.apply(lambda x: np.any([word in x.ColB.split(' ') for word in x.ColA.split(' ')]),axis = 1)
答案 1 :(得分:2)
也许使用issubset
[set(y).issubset(set(x)) for x , y in zip(df.ColA.str.split(),df.ColB.str.split())]
Out[57]: [True, True, False, False]
如果我们只需要比赛
[len(list(set(x) & set(y)))>0 for x , y in zip(df.ColA.str.split(),df.ColB.str.split())]
Out[61]: [True, True, False, False]
答案 2 :(得分:0)
您可以将列表理解与zip
和自定义函数一起使用:
def find_words(words, val):
val_split = val.split()
return any(x in val_split for x in words.split())
df['Match'] = [find_words(a, b) for a, b in zip(df['ColA'], df['ColB'])]