2017-10-14 7 views
1

組み合わせの頻度の正しい解を検索するのに問題があります。Dataframe列で組み合わせが発生する頻度をカウントする - Aprioriアルゴリズム

この私のコード:

import pandas as pd 
import itertools 

list = [1,20,1,50] 

combinations = [] 
for i in itertools.combinations(list ,2): 
    combinations .append(i) 

data = pd.DataFrame({'products':combinations}) 

data['frequency'] = data.groupby('products')['products'].transform('count') 

print data 

The out is: 

    products frequency 
0 (1, 20)  1 
1 (1, 1)  1 
2 (1, 50)  2 
3 (20, 1)  1 
4 (20, 50)  1 
5 (1, 50)  2 

問題である(1、20)及び(20、1)、周波数1を置きされるが、同じ組み合わせを2なければならず、任意の方法とがあります正しい解決策は?

答えて

0

あなたは出力がされるラムダ

import pandas as pd 
import itertools 

list = [1,20,1,50] 

combinations = [] 
for i in itertools.combinations(list ,2): 
    combinations .append(i) 

data = pd.DataFrame({'products':combinations}) 

data['frequency'] = data.groupby(data['products'].apply(
    lambda i :tuple(sorted(i))))['products'].transform('count') 

print (data) 

をapplyand使用して列に変更することで、グループを使用することができます

 products frequency 
0 (1, 20)   2 
1 (1, 1)   1 
2 (1, 50)   2 
3 (20, 1)   2 
4 (20, 50)   1 
5 (1, 50)   2 
関連する問題