代码之家  ›  专栏  ›  技术社区  ›  user517696

如何从数据帧构建网络

  •  0
  • user517696  · 技术社区  · 8 年前

    我有这样一个数据帧:

    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作为用户U1购买了项目A、B、C,即3个常见项目。用户U3购买了B、C、L。

    因此,如果我想找到所有购买了至少3个项目(如U1)的用户,应该以以下形式返回字典

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

    我试过用groupby()来做,但没用。我如何做到这一点??

    谢谢

    1 回复  |  直到 8 年前
        1
  •  3
  •   BENY    8 年前

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