В приведенном ниже примере данных, как найти пользователей в одном месте, которые имеют одинаковый интерес?Данные -
userid interest location
1 [A, B] Z
2 [A, C, B] Y
3 [B, D] Z
4 [A, C] Y
5 [A, B, D] Z
Выходные данные должны быть -
userid relativeid common interest location
1 3 [B] Z
1 5 [A, B] Z
2 4 [A,C] Y
До сих пор я создавал отдельные кадры данных для каждого местоположения, как показано ниже -
userid interest location
1 [A, B] Z
3 [B, D] Z
5 [A, B, D] Z
код-
dictionary = df.set_index('userid')['interest'].map(set).to_dict()
dictionary
out = pd.DataFrame(list(itertools.combinations(df.userid, 2)), columns=['userid', 'relative_id'])
out['common_interest'] = [list(dictionary[x] & dictionary[y]) for x, y in out.values]
out
но это дает мне вывод без столбца местоположения.
userid relativeid common interest
1 3 [B]
1 5 [A, B]
Вопросы: 1) как изменить этот код, чтобы получить столбец местоположения в выводе?2) Есть ли способ сделать это без разделения исходного фрейма данных на несколько фреймов данных в зависимости от местоположения?