从熊猫数据框中的字符串系列中获取单词总数

时间:2018-08-08 14:03:43

标签: python pandas

我有一个由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中有什么好的矢量化实现?

2 个答案:

答案 0 :(得分:0)

使用sumCounter

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并作为值计数。