2016-03-27 266 views
3

值。这是我的熊猫数据框:组合大熊猫数据帧

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

我将如何产生的2和所有可能的唯一组合3组从第1列“项目”的项目。

实施例(2个集): (面包,牛奶) ,(面包,尿布),(面包,啤酒),(牛奶,尿布)等

实施例(3个集): (面包,牛奶,尿布),(面包,牛奶,啤酒),(牛奶,尿布,啤酒)等

回答

5

可以使用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 algorithm实现。

+0

谢谢你。它的工作原理 – vikky

+0

Infact我只实现了apriori算法,可以请给我一种方法来比较数据集中生成的组合。检查数据集中(BREAD,MILK)的支持计数的示例应如何继续。 – vikky

+0

您的数据框应该是交易表的摘要。现在您计算了这些项目的支持计数,根据您的支持阈值,您需要计算项目对的计数。因此,您会在超过该阈值的项目上调用“itertools.combinations”并对它们进行计数。但同样,你需要原始的交易表。 – ayhan