Python:仅选择购买了超过x元素的用户

时间:2017-01-25 10:45:34

标签: python pandas dataframe group-by

我只需要选择购买了超过x件商品的用户

例如我有一张表格:

    users       items
-----------------------
    1            a
    1            b 
    1            c
    1            d 
    2            N  
    2            M

我想只有购买超过3件商品的用户。在案例中,我只有用户1而不是用户2,他们只购买了2件商品。

现在我在我的sql脚本中使用这个条件,输出是我的python脚本的输入但是因为它需要很长时间我希望直接在我的python脚本中执行它。

提前谢谢。

此致

2 个答案:

答案 0 :(得分:1)

您需要filter

foo

transformboolean indexing的另一种解决方案:

df = df.groupby('users').filter(lambda x: len(x['items']) > 3)
print (df)
   users items
0      1     a
1      1     b
2      1     c
3      1     d

答案 1 :(得分:0)

您可以按users分组,然后计算购买的商品数量:

In [8]: d = df.groupby('users').size().reset_index(name='items_purchased')

In [9]: d
Out[9]: 
   users  items_purchased
0      1                4
1      2                2

然后用掩码过滤:

In [10]: fil = 3

In [11]: d = d[d['items_purchased']>fil]

In [12]: d
Out[12]: 
   users  items_purchased
0      1                4