将计数器从集合应用到数据框中的列

Applying the counter from collection to a column in a dataframe

我有一列字符串,其中每一行都是一个字符串列表。我想计算整个列的元素,而不仅仅是 pandas 中的 value.counts() 得到的行。 我想应用 Collections 模块中的 Counter(),但它只在列表上运行。我在 DataFrame 中的列如下所示:

[['FollowFriday', 'Awesome'],
 ['Covid_19', 'corona', 'Notagain'],
 ['Awesome'],
 ['FollowFriday', 'Awesome'],
 [],
 ['corona', Notagain],
....]

我想获取计数,比如

[('FollowFriday', 2),
 ('Awesome', 3),
 ('Corona', 2),
 ('Covid19'),
 ('Notagain', 2),
 .....]

我使用的基本命令是:

from collection import Counter
Counter(df['column'])

from collections import Counter
Counter(" ".join(df['column']).split()).most_common() 

如有任何帮助,我们将不胜感激!

IIUC,您与 pandas 的比较只是为了说明您的目标并且您想使用列表?

您可以使用:

l = [['FollowFriday', 'Awesome'],
     ['Covid_19', 'corona', 'Notagain'],
     ['Awesome'],
     ['FollowFriday', 'Awesome'],
     [],
     ['corona', 'Notagain'],
    ]

from collections import Counter
from itertools import chain

out = Counter(chain.from_iterable(l))

或者如果您有一系列列表,请使用 explode:

out = Counter(df['column'].explode())
# OR
out = df['column'].explode().value_counts()

输出:

Counter({'FollowFriday': 2,
         'Awesome': 3,
         'Covid_19': 1,
         'corona': 2,
         'Notagain': 2})