统计itemset类型字典键在DataFrame中的精确匹配出现次数
问题原因
- 类型不匹配:你字典的键是
set类型,而DataFrame的basket列存储的是list类型,二者即使包含的元素完全一致,相等判断也会返回False,所以in判断永远不会触发,统计值始终为0。 - 字典键类型非法:Python中普通
set是不可哈希类型,无法作为字典的键,你示例中的字典写法实际运行会直接报错,需要替换为可哈希的frozenset类型作为键。
解决方案
首先修正字典的键类型:
# 将原字典的键替换为可哈希的frozenset dict_of_items = { frozenset({'apple','banana','pear'}): 0, frozenset({'banana', 'orange', 'squash'}): 0 }
执行统计逻辑:
# 将basket列的所有列表转为frozenset,和字典键类型对齐 df['basket_set'] = df['basket'].apply(frozenset) # 批量统计所有集合的出现次数,比逐行遍历效率更高 item_counts = df['basket_set'].value_counts() # 批量更新字典的计数 for itemset in dict_of_items: dict_of_items[itemset] = item_counts.get(itemset, 0)
运行后dict_of_items就是你期望的计数结果。
内容的提问来源于stack exchange,提问作者Nekojell
相关产品推荐
相关产品推荐

