Python - 两列的文本比较

时间:2017-07-23 14:21:36

标签: python pandas

我有一个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数据框中完成所有这些操作?

1 个答案:

答案 0 :(得分:3)

我认为您需要使用apply axis=1进行逐行处理,然后与in进行比较。最后在True列中的astypeFalse1,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