我无法按行计算 pandas 系列中单词的出现次数

问题描述 投票:0回答:2

我有一个 pandas DataFrame,其中有一个名为“spam['v2']”的系列,其中每行包含一个句子。我想创建一个新系列来计算每行的字数,其中输出是一个字典,其中单词作为键,其相应的计数作为值。

例如,如果我的原始系列看起来像这样:

我想创建一个新系列,其中行具有以下字典:

我尝试了这个并成功完成了任务,但它是使用常规Python完成的:

对于那些想要查看完整工作文件(One Drive 链接)的人:https://1drv.ms/f/s!AsQPI-pwVwq5v03-11e7R3Rme-2l?e=9LMtgd

import pandas as pd

spam = pd.read_csv('spam.csv')

def freq(text):
    
    words = []
    words = text.split()
    wfreq=[words.count(w) for w in words]
    
    return dict(zip(words,wfreq))

count = spam['v2'].apply(freq)
count = pd.Series(count)

我不确定如何使用 pandas 和系列方法有效地解决这个问题,而不使用常规的 python。 有人可以指导我如何使用 pandas 实现这一目标吗?

谢谢!

python pandas dataframe dictionary word-frequency
2个回答
1
投票

您尝试过使用

从收藏导入计数器


0
投票
import pandas as pd

spam = pd.read_csv('spam.csv')

def word_count(text):
    words = text.split()
    word_count = {}
    for word in words:
        if word in word_count:
            word_count[word] += 1
        else:
            word_count[word] = 1
    return word_count

spam['word_count'] = spam['v2'].apply(word_count)
© www.soinside.com 2019 - 2024. All rights reserved.