2017-10-14 12 views
1

올바른 빈도 솔루션을 검색하는 데 문제가 있습니다.데이터 프레임 열에서 조합이 발생하는 빈도 계산 - 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