Сводная таблица в Python с несколькими строками вместо совокупности - PullRequest
0 голосов
/ 05 марта 2020

Я делаю код 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

Вывод сводной таблицы

Есть ли способ получить получившуюся таблицу с несколькими строками?

Заранее спасибо!

...