Звучит так, будто вы хотите что-то вроде collections.Counter
, которое вы можете использовать следующим образом ...
from collections import Counter
from functools import reduce
import operator
import pandas as pd
fold = lambda f, acc, xs: reduce(f, xs, acc)
df = pd.DataFrame({'Tweet_id': ['Tweet_%s'%i for i in range(1, 7)],
'hashtags':[['t', 'c'], ['t', 's'],
['p','n'], ['n', 't'],
['f', 'd'], ['t', 'i', 'c']]})
fold(operator.add, Counter(), [Counter(x) for x in df.hashtags.values])
, что дает вам
Counter({'c': 2, 'd': 1, 'f': 1, 'i': 1, 'n': 2, 'p': 1, 's': 1, 't': 4})
Редактировать: Я думаю, что ответ jpp будет немного быстрее.Если время действительно является ограничением, я бы не стал считывать данные в DataFrame
.Я не знаю, как выглядит необработанный файл csv
, но чтение его в виде текстового файла по строкам, игнорирование первого токена и подача остальных в Counter
может оказаться довольно быстрым.