首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Pandas在关键字/句子上的合并

Python Pandas在关键字/句子上的合并
EN

Stack Overflow用户
提问于 2019-02-23 23:37:32
回答 1查看 206关注 0票数 1

我对python非常陌生,我不知道如何解决以下问题:

我有两个数据,我想使用某种类型的VLOOKUP函数来匹配一个句子和一个特定的关键字。在下面的示例中,(df1) 3e语句应该与香蕉(df2)匹配,因为它在句子中包含香蕉。

代码语言:javascript
复制
import pandas as pd
df1 = pd.DataFrame({'Text': ['Some text 1', 'Some text 2','The monkey eats a banana','Some text 4']})
df2 = pd.DataFrame({'Keyword': ['apple', 'banana', 'chicken'], 'Type': ['fruit', 'fruit', 'meat']})

df1

    Text
0   Some text 1
1   Some text 2
2   The monkey eats a banana
3   Some text 4

df2

    Keyword Type
0   apple   fruit
1   banana  fruit
2   chicken meat

因此,较可取的结果是:

代码语言:javascript
复制
    Text                        Type
0   Some text 1                 -
1   Some text 2                 -
2   The monkey eats a banana    fruit
3   Some text 4                 -

我已经尝试过使用merge和str.contains函数,但是问题是香蕉在一个句子中,而不是一个独立的值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-23 23:45:02

使用extract作为关键字,使用map将提取的“关键字”映射到“类型”。

代码语言:javascript
复制
import re

p = rf"({'|'.join(map(re.escape, df2['Keyword']))})"
# p = '(' + '|'.join(map(re.escape, df2['Keyword'])) + ')'

df1['Type'] = (
    df1['Text'].str.extract(p, expand=False).map(df2.set_index('Keyword')['Type']))
df1

                       Text   Type
0               Some text 1    NaN
1               Some text 2    NaN
2  The monkey eats a banana  fruit
3               Some text 4    NaN

哪里,

代码语言:javascript
复制
p
# '(apple|banana|chicken)'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54847332

复制
相关文章

相似问题

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