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