为列表中的每个项目查找最常关联的项目

问题描述

我真的很难找到答案 - 我正在尝试为列表中的每个项目找到最常一起出售的项目。我已经设法让我的数据看起来像这样:

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 种最常出售的商品以及我们目前销售的每件商品吗?

任何帮助将不胜感激。

干杯?

解决方法

对于每个项目,您需要保留以相同顺序出现的其他项目的计数列表。扫描订单列表并为每对增加计数器。最后,只报告每个列表中计数最大的三个项目。

为了实现,如果列表是稀疏的(一个给定的项目与其他几个项目一起出现),每个项目使用一个字典。否则,使用计数数组。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...