问题描述
我真的很难找到答案 - 我正在尝试为列表中的每个项目找到最常一起出售的项目。我已经设法让我的数据看起来像这样:
order_number item_name
0 517640 [nan]
1 517660 [a]
2 517663 [a,b]
3 517665 [a,c,d,e]
4 517666 [c,a,b,d]
我目前使用的代码是:
import itertools
list(itertools.combinations(items.item_name[0],3))
combinations_list = []
for row in items.item_name:
combinations = list(itertools.combinations(row,2))
combinations_list.append(combinations)
combinations_list[:2]
combination_counts = pd.Series(combinations_list).explode().reset_index(drop=True)
combination_counts.value_counts()[:50]
这将返回出现在此列表中的 50 个最常见的对(我认为 ?)。
有什么想法可以让我在列表中显示 3 种最常出售的商品以及我们目前销售的每件商品吗?
任何帮助将不胜感激。
干杯?
解决方法
对于每个项目,您需要保留以相同顺序出现的其他项目的计数列表。扫描订单列表并为每对增加计数器。最后,只报告每个列表中计数最大的三个项目。
为了实现,如果列表是稀疏的(一个给定的项目与其他几个项目一起出现),每个项目使用一个字典。否则,使用计数数组。