Как посчитать совпадения строк в столбце строк pyspark? - PullRequest
0 голосов
/ 19 июня 2019

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

Я уже создал 2 списка, которые предоставляютвсе возможные комбинации по 2 страницы.У меня также есть список сеансов (строк), где каждая строка представляет собой последовательность страниц, разделенных запятой.

Теперь я хочу создать список, который будет подсчитывать, для каждой пары страниц, сколькосеансы они появляются вместе.Я пробовал это с циклом for, который выглядит разумным, но он слишком медленный, даже с небольшим сэмплом (он вращался часами, но еще не закончился).

# This is what I have as input data:
list1 = ['page_a','page_a','page_a','page_b','page_b','page_c']
list2 = ['page_b','page_c','page_d','page_c','page_d','page_d']

sessions = ['page_a,page_b',
            'page_b,page_d,page_c',
            'page_b',
            'page_d,page_c,page_a,page_b,',

]

# This is the for loop I have tried, but that is way too slow:
coocurrence = []
for i in page1:
    for j in page2:
        counter = 0
        for session in sessions:
            counter += ((i in session) and (j in session))
        coocurrence.append(counter)

Я ожидаю в качестве выводасписок под названием «coocurrence», где coocurrence [i] - это количество раз, когда list1 [i] и list2 [i] появляются вместе в сеансах.

В этом примере это будет:

[2,1,1,2,2,2]

Есть ли способ сделать это более эффективно?Я изначально использую PySpark, но не знаю, как это можно распараллелить ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...