使用 apply 填充字典

Using apply to populate a dictionary

我有一个包含 python 标签列表的数据框列。我需要创建一个字典来计算标签被使用的次数。我是这样做的:

tags_use_count = {}

def count_tags(tag_list):
    
    for tag in tag_list:
        if tag in tags_use_count:
            tags_use_count[tag] += 1
        else:
            tags_use_count[tag] = 1

q2019['Tags'].apply(count_tags)

它工作得很好,但我想知道这是否是一个好的方法。不知何故,以这种方式使用 apply 似乎是经验丰富的编码人员不喜欢的蹩脚解决方法。 (我猜这不是 apply 的目的。)数据集很小,所以我想我可以使用 iterrows 循环遍历该列,但我知道这对于较大的数据集不是一个好主意,我想知道我的方法是否会是在这种情况下,或者如果有更好的方法。

IIUC,您只想计算每一行中的每个列表。所以你可以展开 'Tags'-column 并计算值并转换为字典:

q2019['Tags'].explode().value_counts().to_dict()

您可以使用 collections.Counter 来做到这一点:

>>> from collections import Counter
>>> tag_list = ['tag_a', 'tag_b', 'tag_b', 'tag_c']
>>> dict(Counter(tag_list))
{ 'tag_a': 1, 'tag_b': 2, 'tag_c': 1}