我正在寻找一个数据帧中的一组字符串,然后将这些字符串分解以获取字符串中不同单词的数量。最终的想法是这样的:
单词1:5次
单词2:3次
单词3:10次
...
单词n:13次
最终目标是采用这组字符串,然后将分析扩展为2个单词,3个单词等等的分组。
我尝试了多种包装,包括熊猫,再包装,收藏等等,但似乎没有什么可以让我找到所需的地方。
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
Word 2:20
Word 3:14
...
2个单词组合:10
2个单词组合:15
...
3字组合:30
3字组合:40
...
等
感谢您的帮助!
答案 0 :(得分: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库的现有代码应该返回该计数。