我的数据帧大约有118,000条推文。这是一个伪造的示例:
WritableKeyPath
我还使用了“设置”功能来获取在我的推文数据框中找到的每个唯一单词的列表。对于上面的示例,它看起来像这样(无特定顺序):
import numpy as np
array1 = np.array([2, 2, 2, 0, 2, 0, 2])
print np.where(array1==0, 1, array1)
基本上,我需要找出包含给定单词的tweets。例如,在3条推文中找到“ The”,在1条推文中找到“ apple”,在3条推文中找到“ is”,依此类推。
我尝试过使用嵌套的for循环,如下所示:
Tweets
1 The apple is red
2 The grape is purple
3 The tree is green
这将创建一个新列表,并为列表中的每个单词计算包含给定单词的推文数量。但是,我发现这种极其低效的代码块需要永远运行。
有什么更好的方法?
答案 0 :(得分:5)
您可以使用:str.count
df.Tweets.str.count(word).sum()
例如,我想单词是列表
for word in Words:
print(f'{word} count: {df.Tweets.str.count(word).sum()}')
完整样本:
import pandas as pd
data = """
Tweets
The apple is red
The grape is purple
The tree is green
"""
datb = """
Words
The
is
apple
grape
"""
dfa = pd.read_csv(pd.compat.StringIO(data), sep=';')
dfb = pd.read_csv(pd.compat.StringIO(datb), sep=';')
Words = dfb['Words'].values
dico = {}
for word in Words:
dico[word] = dfa.Tweets.str.count(word).sum()
print(dico)
输出:
{'The': 3, 'is': 3, 'apple': 1, 'grape ': 1}
答案 1 :(得分:1)
您可以为此使用默认词典来存储所有单词计数,如下所示:
from collections import defaultdict
word_counts = defaultdict(int)
for tweet in tweets:
for word in tweet:
word_counts[word] += 1
# print(word_counts['some_word']) will output occurrence of some_word
答案 2 :(得分:0)
这将把您的单词列表变成字典
import collections
words = tweets.split()
counter = collections.Counter(words)
for key , value in sorted(counter.items()):
print("`{}` is repeated {} time".format(key , value))