我有一个Pandas数据框,我想比较两列'text'和'text_find'。
我想创建一个布尔标志'compare',如果'text_find'中的单词位于'text'中,则设置为1,否则将'compare'设置为0.例如
'text' = 'i hate cars'
'text_dins' = 'cars'
这将使'compare'= 1
'text' = 'i hate cars'
'text_dins' = 'rabbits'
这将使'compare'= 0
我将如何在pandas数据框中完成所有这些操作?
答案 0 :(得分:3)
我认为您需要使用apply
axis=1
进行逐行处理,然后与in
进行比较。最后在True
列中的astype
将False
和1,0
转换为new
:
df = pd.DataFrame({'text':['i hate cars','i hate cars'], 'text_dins':['cars', 'rabbits']})
print (df)
text text_dins
0 i hate cars cars
1 i hate cars rabbits
df['new'] = df.apply(lambda x: x['text_dins'] in x['text'] , axis=1).astype(int)
print (df)
text text_dins new
0 i hate cars cars 1
1 i hate cars rabbits 0
如果没有NaN
s:
df['new'] = [int(x[0] in x[1]) for x in zip(df['text_dins'], df['text'])]
print (df)
text text_dins new
0 i hate cars cars 1
1 i hate cars rabbits 0