создать биграмму из колонны в пандах df

у меня есть эта тестовая таблица в панде dataframe

   Leaf_category_id  session_id  product_id
0               111           1         987
3               111           4         987
4               111           1         741
1               222           2         654
2               333           3         321

это продолжение моего предыдущего вопроса, на который ответил @jazrael.посмотреть ответ

поэтому после получения значений в столбце product_id как (только предположение, немного отличается от вывода моего предыдущего вопроса,

   |product_id               |
   ---------------------------
   |111,987,741,34,12        |
   |987,1232                 |
   |654,12,324,465,342,324   |
   |321,741,987              |
   |324,654,862,467,243,754  |
   |6453,123,987,741,34,12   |

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

   |product_id               |Bigram
   -------------------------------------------------------------------------
   |111,987,741,34,12        |(111,987),**(987,741)**,(741,34),(34,12),(12,111)
   |987,1232                 |(987,1232),(1232,987)
   |654,12,324,465,342,32    |(654,12),(12,324),(324,465),(465,342),(342,32),(32,654)
   |321,741,987              |(321,741),**(741,987)**,(987,321)
   |324,654,862              |(324,654),(654,862),(862,324)
   |123,987,741,34,12        |(123,987),(987,741),(34,12),(12,123)

игнорировать ** (я скажу вам позже, почему я снялся в этом)

код для достижения биграммы

for i in df.Leaf_category_id.unique(): 
    print (df[df.Leaf_category_id == i].groupby('session_id')['product_id'].apply(lambda x: list(zip(x, x[1:]))).reset_index())

Исходя из этого, я хочу рассмотреть столбец биграммы и сделать еще один столбец, называемый частотой, что дает мне частоту появления биграммы.

Примечание *: (987,741) и (741,987) должны рассматриваться как одинаковые, и одна дублируемая запись должна быть удалена, и поэтому частота (987,741) должна быть равна 2. Аналогично случаю с (34,12) это происходит два раза, поэтому частота должна быть 2

   |Bigram
   ---------------
   |(111,987),
   |**(987,741)**
   |(741,34)
   |(34,12)
   |(12,111)
   |**(741,987)**
   |(987,321)
   |(34,12)
   |(12,123)

Окончательный результат должен быть.

   |Bigram       | frequency |
   --------------------------
   |(111,987)    |  1 
   |(987,741)    |  2
   |(741,34)     |  1
   |(34,12)      |  2
   |(12,111)     |  1
   |(987,321)    |  1
   |(12,123)     |  1

Я надеюсь найти ответ здесь, пожалуйста, помогите мне, я разработал его как можно больше.

Ответы на вопрос(2)

Ваш ответ на вопрос