Как построить сеть из фрейма данных - PullRequest
0 голосов
/ 22 мая 2018

У меня есть такой фрейм данных:

User ID  Item   Category
U1       A      Furniture
U2       B      Sports
U3       C      Furniture
U2       A      Grocery
U3       B      Sports
U2.      B      Sports....

Я хочу создать словарь пользователей, которые купили более 3 таких же предметов, что и другой пользователь.Например:

Допустим, пользователь U1 купил предметы A, B, C, D, E, L, M. Пользователь U2 купил предметы A, B, C, то есть 3 общих предмета, как пользователь U1.Пользователь U3 купил B, C, L.

Так что, если я хочу найти всех таких пользователей, которые купили как минимум 3 предмета как U1, словарь должен быть возвращен в следующей форме

{U2: [A, B, C], U3:[B, C, L],....} 

Я пытался сделать это с groupby (), но это не работает.Как мне этого добиться ??

Спасибо

1 Ответ

0 голосов
/ 22 мая 2018

IIUC

ID='U1'
n=1
Ux=df.loc[df.UserID==ID,'Item'].tolist()
s=df.loc[df.Item.isin(Ux)&~df.UserID.isin([ID]),].groupby('UserID').Item.count()
s1=s[s>=n].index.tolist()

d=df.loc[df.UserID.isin(s1),].groupby('UserID').Item.apply(list).to_dict()


d
Out[156]: {'U3': ['C'], 'U4': ['A']}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...