挖掘数据帧以获得一系列独特的单词

问题描述 投票:1回答:1

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

言语1:5次

言语2:3次

言语3:10次

...

字n:13次

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

我尝试了多个包,包括Pandas,re,collection等,但似乎没有什么能让我得到我需要的地方。

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-Word-Combo:10

2-Word-Combo:15

...

3-Word-Combo:30

3-Word-Combo:40

...

等等

我感谢您的帮助!

python python-3.x text-mining text-parsing
1个回答
0
投票

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

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库的现有代码应该返回。

© www.soinside.com 2019 - 2024. All rights reserved.