首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python -两列的文本比较

Python -两列的文本比较
EN

Stack Overflow用户
提问于 2017-07-23 22:21:36
回答 1查看 2.5K关注 0票数 1

我有一个Pandas数据帧,我想在其中比较两列'text‘和'text_find’。

我想创建一个布尔标志'compare‘,如果'text_find’中的单词位于'text‘中,则将其设置为1,否则将'compare’设置为0。例如:

代码语言:javascript
复制
'text' = 'i hate cars'
'text_dins' = 'cars'

这将使'compare‘=1

代码语言:javascript
复制
'text' = 'i hate cars'
'text_dins' = 'rabbits'

这将使'compare‘=0

我该如何在pandas数据帧中完成这一切呢?

EN

回答 1

Stack Overflow用户

发布于 2017-07-23 22:25:51

我认为您需要使用带有axis=1apply来按行处理,然后再与in进行比较。最后,将Trues和Falses转换为new列中的1,0 by astype

代码语言:javascript
复制
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,则使用列表理解的另一种解决方案:

代码语言:javascript
复制
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
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45266118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档