挖掘数据帧中的唯一单词数

2024-09-30 14:26:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在数据帧中获取一组字符串,然后将这些字符串分解,以获得字符串中不同单词的计数。最终的想法是:

单词1:5次

单词2:3次

单词3:10次

单词n:13次

最终目标是获取这组字符串,然后将分析扩展为2个单词、3个单词的分组,依此类推

我尝试过多个软件包,包括Pandas、re、collections等,但似乎没有什么能满足我的需要

import pandas as pd

import re


fPath = 'path\there'
fName = '\BuzzWords.xlsx'

importExcel = pd.read_excel(fPath+fName, sheetname = 'DATA')
importExcel.sort_index(inplace = True)

bWList = ['words','things']

pattern = '(?i)('+'|'.join(bWList)+')'

minerFrame = importExcel[0:0]

dFCounter = max(importExcel.index)

for i in range(0,dFCounter+1):

    temp = importExcel[i:i+1]

    checker = temp[temp['description'].str.contains(pattern)]

    checker2 = checker.isnull().sum().sum()

    if checker2 > 0:
        minerFrame = minerFrame.append(temp)

minerFrame = minerFrame.reset_index(drop = True)

该代码最终会导致这种结果:

单词1:10

单词2:20

字3:14

2字组合:10

2字组合:15

三字组合:30

三字组合:40

等等

我感谢你的帮助


Tags: 字符串importretrueindex单词fnametemp
1条回答
网友
1楼 · 发布于 2024-09-30 14:26:50

正如@Chris所提到的,来自collections库的Counter对象将返回一个包含唯一单词的字典,以及它们的计数。所以你可以这样做:

from collections import Counter

#...
bwDict = {}
for word in bwList:
    bwDict[word] = 0

for i in range(0,dFCounter+1):

    content = importExcel.loc[i, 'description']
    for key, val in Counter(content).items():
        if key in bwDict.keys():
            bwDict[key] += val

这不会返回组合计数,但使用re库的现有代码应该返回该计数

相关问题 更多 >