首页 > 解决方案 > 如何获取数据集中某些单词的值计数

问题描述

我想在评论列下的数据框中找到某些关键术语的值计数。它是关于客户评论的数据集,我正在寻找某些单词的值计数。我想要价值计数的词是这些词:

keywords= ["big","hat",'dress',"fabric","color"]

下面我已经做了一个函数,它会说明每一行是否有我的一个关键术语。但是现在我需要找到“关键字”的值计数,我有点卡住了,有人可以帮忙吗?

如何查找下面列出的关键字的值计数?

keywords= ["big","hat",'dress',"fabric","color"]

def keyword(value):
    strings = value.split()
    if any(word in strings for word in keywords):
        return 1
    else:
        return 0
    shopbop['keyword_solution']=shopbop['review_mo'].apply(keyword)

这只会使新列显示该词是否在他们的范围内。

奖金......如果有一种方法可以制作如下所示的列,但也可以在新列的行中显示新创建的列中该行中出现的每个关键字,那也将非常酷

def keyword(value):
    strings = value.split()
    if any(word in strings for word in keywords):
        return 1
    else:
        return 0
    shopbop['keyword_solution']=shopbop['review_mo'].apply(keyword)

标签: pythonfunctionloops

解决方案


如果您向我们提供了您所指的 DataFrame 的示例,那将会很有帮助,以免误解您的方法,尽管如此,我将尝试使用如下组成的 DataFrame:

import pandas as pd
data={'review_mo':['First hat big hat line with a red color dress',
                   'Second line color color color and fabric hat', 
                   'Third line without any of those keywords but fabric ',
                   'Fourth line fabric of big big big hat fabric',
                   'big big hat hat dress dress fabric fabric color color']}
values=[0,0,0,0,0]
keywords= ["big","hat",'dress',"fabric","color"]
dictionary = dict(zip(keywords, values))
data.update(dictionary)
shopbop=pd.DataFrame(data,columns=['review_mo']+keywords)

数据框和关键字列表必须作为函数参数传递:

def keyword(value,shopbop,keywords):
    for key in keywords:
        shopbop.loc[shopbop['review_mo']==value,key]=len([x for x in value.split() if x==key])

此块给出了您要求(或排序)的奖励以及在每个字符串中找到的关键术语的总值计数:

shopbop['review_mo'].apply(lambda x: keyword(x,shopbop,keywords))
shopbop['keyword_solution']=shopbop[keywords].sum(axis=1)

显示简历:

shopbop.loc[:, shopbop.columns != 'review_mo']

   big  hat  dress  fabric  color  keyword_solution
0    1    2      1       0      1                 5
1    0    1      0       1      3                 5
2    0    0      0       1      0                 1
3    3    1      0       2      0                 6
4    2    2      2       2      2                10

推荐阅读