如何从数据框

时间:2018-05-22 16:43:23

标签: python pandas networkx

我有一个这样的数据框:

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(),但它不起作用。我如何实现这一目标?

由于

1 个答案:

答案 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']}