Pandas数据框中值的组合

12

这是我的pandas数据框:

       Item          Support_Count
0      BREAD              4
1      MILK               4
2      DIAPER             4
3      BEER               3

如何从第一列“物品”中生成所有可能的独特的2个和3个项目集组合。

示例(2个项目集): (面包,牛奶) ,(面包,尿布),(面包,啤酒),(牛奶,尿布)等。

示例(3个项目集): (面包,牛奶,尿布),(面包,牛奶,啤酒),(牛奶,尿布,啤酒)等。

1个回答

21
你可以使用 itertools 库:
import itertools
list(itertools.combinations(df['Item'], 2))

[('BREAD', 'MILK'),
 ('BREAD', 'DIAPER'),
 ('BREAD', 'BEER'),
 ('MILK', 'DIAPER'),
 ('MILK', 'BEER'),
 ('DIAPER', 'BEER')]

list(itertools.combinations(df['Item'], 3))

[('BREAD', 'MILK', 'DIAPER'),
 ('BREAD', 'MILK', 'BEER'),
 ('BREAD', 'DIAPER', 'BEER'),
 ('MILK', 'DIAPER', 'BEER')]

注意:组合数量增长非常迅速,因此生成所有可能的组合可能不是有效的。如果您还没有这样做,我建议查看Apriori算法实现。


哎呀,我的疑问是如何计算形成的组合的支持计数。 - data_person
事实上,我正在实现Apriori算法,您能告诉我一种比较数据集中生成的组合的方法吗?例如,如何检查数据集中(BREAD,MILK)的支持计数应该如何进行。 - data_person
你的数据框应该是交易表的一个摘要。现在,你已经计算出这些项目的支持计数,根据你的支持阈值,你需要计算项目对的计数。因此,你将在超过该阈值的项目上调用 itertools.combinations 并计算它们的数量。但是,你需要原始的交易表来完成这个任务。 - ayhan
那个问题的答案将基于您原始数据集的结构。您所有交易项是否在一个单元格中,还是它们在具有相同交易ID的不同行中?等等。我建议使用输入和期望输出提出一个新问题。 - ayhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接