【问题标题】:Using apply to populate a dictionary [duplicate]使用 apply 填充字典 [重复]
【发布时间】:2022-01-16 19:23:04
【问题描述】:

我有一个包含 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 循环遍历列,但我知道这对于更大的数据集不是一个好主意,我想知道我的方法是否会是在这种情况下,或者如果有更好的方法。

【问题讨论】:

    标签: python pandas dictionary apply


    【解决方案1】:

    您可以使用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}
    
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-07-28
        • 2015-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多