【问题标题】:Count the frequency that a combination occurs in a Dataframe column - Apriori algorithm计算组合在 Dataframe 列中出现的频率 - Apriori 算法
【发布时间】:2017-10-14 11:33:25
【问题描述】:

我在搜索组合频率的正确解时遇到了问题。

这是我的代码:

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,有没有什么方法可以正确解?

【问题讨论】:

    标签: python dataframe count frequency apriori


    【解决方案1】:

    您可以通过使用 apply 和 lambda 对列进行修改来使用 group

    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)
    

    输出将是

         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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多