Найти наиболее часто встречающуюся пару значений Python Pandas

Есть следующий DataFrame:

Транзакция  Сумма   Товар
1   500 1
1   600 2
1   500 1
1   548 3
1   849 1
2   654 4
2   654 1
2   321 2
2   469 2
2   465 5
3   564 1
3   465 6
3   444 7
3   123 6
3   648 7

Необходимо найти пару самых часто встречающихся товаров в каждой транзакции и указать количество этих транзакции. В данном примере ответ должен быть товар 1 , 2 , встретился в 2 транзакциях


Ответы (2 шт):

Автор решения: MaxU

Векторизированные Pandas / Numpy решения в вашем случае будут сильно уступать по скорости обработки специализированным библиотекам, которые реализуют "Apriori" алгоритм и ему подобные.

Ссылки на модули:

→ Ссылка
Автор решения: strawdog

Можно сделать группировкой (если я понял вопрос правильно):

res = df.groupby("Товар", as_index=False)["Транзакция"].nunique().sort_values("Транзакция", ascending=False).head(2)["Товар"].tolist()

res:

[1, 2]
→ Ссылка