Я делаю код Apriori в Python с библиотекой mlxtend, и я хотел бы преобразовать столбцы Antecedents из этого формата строки в разреженную матрицу
frequent_items = apriori(df, min_support=0.01, use_colnames=True, max_len=5)
rules = association_rules(frequent_items, metric='lift', min_threshold=1)
Apriori вывод
Я уже конвертирую антецеденты из frozenset ({'item_a,' item_e '}) в список с этим фрагментом кода:
p['antecedents'] = p['antecedents'].apply(lambda x: ', '.join(list(x))).astype('unicode')
Но когда я попытайтесь преобразовать этот фрейм данных в разреженную матрицу, используя pivot_table, он собирает значения
sm = p.set_index([#'index',
'consequents',
'antecedent support',
'consequent support',
'support',
'confidence',
'lift',
'leverage',
'conviction'])['antecedents'].str.split(',\s*', expand=True).stack().reset_index()\
.pivot_table(index=[#'index',
'consequents',
'antecedent support',
'consequent support',
'support',
'confidence',
'lift',
'leverage',
'conviction'], columns=0, fill_value=0, aggfunc='size')
Этот фрагмент кода даст мне желаемый результат, если он будет в нескольких строках. В моем примере мне потребуются все столбцы из заданного индекса, а затем
item_a item_c item_e
1 1 1
1 0 1
, но вместо этого я получу
item_a item_c item_e
2 1 2
Вывод сводной таблицы
Есть ли способ получить получившуюся таблицу с несколькими строками?
Заранее спасибо!