如何用大熊猫找字?或者两个词的组合?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用大熊猫找字?或者两个词的组合?相关的知识,希望对你有一定的参考价值。

我需要从一篇文章中找到两个词的组合,也需要找到下一个词的列表。例如,我有这样的df。

id                 date                     text
1                  1.1.20                   this is a sweet cat.
2                  1.1.20                   the cat is sweet.
3                  2.1.20                   sweet dogs are difficult to find.
4                  3.1.20                   I love sweet cats.

首先我需要找到两个词的组合... ... 例如 "甜美的猫"。

我想我可以通过使用 str.contains 但它不能正常工作... ... 缺了很多行。

第二件事我想搜索这个词,它就会生成搜索过的词列表,旁边有这个词。

例如,我搜索 df[df['text'].str.contains('sweet')] 那么它应该生成这样的列表。

list
['sweet cat', 'sweet', 'sweet dogs', 'sweet cats']
答案

你可以使用 df.str.split:

d = df[df['text'].str.contains('sweet')]

d.text.apply(lambda x: 'sweet ' + x.split('sweet')[-1].split()[0].strip('.')).tolist()

输出。

['sweet cat', 'sweet ', 'sweet dogs', 'sweet cats']
另一答案

你可以使用 pd.Series.str.extract

df['text'].str.extract('(sweet\s*\w*|sweet)', expand=False).tolist()
# ['sweet cat', 'sweet', 'sweet dogs', 'sweet cats']
另一答案

另一种解决方案,使用 re 模块:

import re
import pandas as pd

df = pd.DataFrame({'sentences': ['this is a sweet cat.', 'the cat is sweet.', 'sweet dogs are difficult to find.', 'I love sweet cats.']})

kw = 'sweet'
r = re.compile(r'\b({})\s*(\w*)'.format(re.escape(kw)))

print( df['sentences'].apply(lambda x: [' '.join(t).strip() for t in r.findall(x)]).explode().tolist() )

印刷:

['sweet cat', 'sweet', 'sweet dogs', 'sweet cats']

以上是关于如何用大熊猫找字?或者两个词的组合?的主要内容,如果未能解决你的问题,请参考以下文章

如何用MATLAB生成分类用的二维模拟数据

怎么用matlab仿真啊?

请问如何用matlab创建TXT文本文档啊?

如何用熊猫把传说放在情节之外

如何用熊猫把传说放在情节之外

如何用十进制创建熊猫系列?