我有一个由tweet组成的2列Pandas数据框:第二列是tweets本身。我想把所有推文的字数加在一起。
数据框如下所示:
RT @PaulHaleAndMom: Four Hours After #Piedmont...
RT @NatPoliceAssoc: Body camera video shows At...
RT @XLNB: When Spanish Drake and Jamaican Drak...
I almost cried this morning. My babies are ...
@SebastianDanzig Hey Bassy are tickets and VIP...
以下是按行统计的信息。
wc_DF = tweets_DF['text'].apply(lambda x: Counter(x.lower().split()))
即
{'rt': 1, '@paulhaleandmom:': 1, 'four': 1, 'h...
为此,在Pandas中有什么好的矢量化实现?
答案 0 :(得分:0)
使用sum
和Counter
c = [ "RT @PaulHaleAndMom: Four Hours After #Piedmont...", "RT @NatPoliceAssoc: Body camera video shows At...","RT @XLNB: When Spanish Drake and Jamaican Drak..."]
from collections import Counter
Counter(pd.Series(c).str.split().sum())
Counter({'RT': 3,
'@PaulHaleAndMom:': 1,
'Four': 1,
'Hours': 1,
'After': 1,
'#Piedmont...': 1,
'@NatPoliceAssoc:': 1,
'Body': 1,
'camera': 1,
'video': 1,
'shows': 1,
'At...': 1,
'@XLNB:': 1,
'When': 1,
'Spanish': 1,
'Drake': 1,
'and': 1,
'Jamaican': 1,
'Drak...': 1})
答案 1 :(得分:0)
另一种解决方案,如果您想留在大熊猫中,假设您的字符串Series被引用为tweets_DF['text']
:
words = tweets_DF['text'].str.split()
word_counts = pd.value_counts(words.apply(pd.Series).stack())
words
将是一系列列表,您可以通过使用Series构造函数在Series上运行Apply来转换为DataFrame。之后,您可以使用stack()
转换回一个包含每个单词作为其值的(多索引)系列。最后,您可以使用value_counts(..)
对观察值进行计数,以返回以单词索引的Series并作为值计数。