如何计算熊猫数据帧中列表中的特定单词



我想知道如何计算特定数据帧中列表中的唯一单词数。例如,假设我有一个列表=['John','Bob,'Hannah']接下来,我有一个数据框架,其中有一列叫做句子

df = 
['sentences']

0 Bob went to the shop
1 John visited Hannah
2 Hannah ate a burger

我希望输出为:

John 1
Bob 1
Hannah 2

如何计算数据集中任意行中任意给定句子中的唯一名称?

您可以使用Series.str.contains并调用sum来获取单词在给定列中的出现次数,只需在列表中迭代所有子字符串并对每个单词执行相同操作,即可将结果存储为dictionary。

list1 = ['John','Bob','Hannah']
output = {}
for word in list1:
output[word] = df['sentences'].str.contains(word).sum()

输出:

{'John': 1, 'Bob': 1, 'Hannah': 2}

你甚至可以在字典理解中使用它:

>>> {word: df['sentences'].str.contains(word).sum() for word in list1}
{'John': 1, 'Bob': 1, 'Hannah': 2}

PS:如果一个单词/子字符串在给定列的同一行中多次出现,上述方法将把这些多次出现的次数计数为1,如果你想在这种情况下获得多个计数,你可以为每个单元格值实现相同的逻辑

您也可以使用str.splitexplodevalue_counts

l = ['John', 'Bob', 'Hannah']
df.sentences.str.split().explode().value_counts()[l]
Out[239]:
John      1
Bob       1
Hannah    2
Name: sentences, dtype: int64

但是,我认为dict comprehension更快。

在您的案例中,

list1 = ['John','Bob','Hannah']
df.Col1.str.findall('|'.join(list1)).explode().value_counts()
Hannah    2
Bob       1
John      1
Name: Col1, dtype: int64

最新更新