создать биграмму из колонны в пандах 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
Я надеюсь найти ответ здесь, пожалуйста, помогите мне, я разработал его как можно больше.