我有一个这样的数据框:
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,即用户U1的3个常用商品。用户U3购买了B,C,L。
因此,如果我想找到所有购买至少3件作为U1的用户,则应以下列形式返回字典
{U2: [A, B, C], U3:[B, C, L],....}
我尝试过使用groupby(),但它不起作用。我如何实现这一目标?
由于
答案 0 :(得分:3)
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']}