gpt4 book ai didi

Python Pandas 合并关键字/句子

转载 作者:行者123 更新时间:2023-12-01 01:11:19 29 4
gpt4 key购买 nike

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

我有两个数据框,我想使用某种 VLOOKUP 函数来将句子与特定关键字相匹配。在下面的示例中,(df1) 3e 句子应与“banana”(df2) 匹配,因为它在句子中包含“banana”。

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

因此,更好的结果是:

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

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

最佳答案

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

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

哪里,

p
# '(apple|banana|chicken)'

关于Python Pandas 合并关键字/句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54847332/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com