Python 查找并打印其子元素具有相似值的所有行

Python 查找并打印其子元素具有相似值的所有行,python,pandas,algorithm,numpy,data-cleaning,Python,Pandas,Algorithm,Numpy,Data Cleaning,我的数据集包含以下字段: User Product Time A 10 10-JAN B 14 10-JAN C 20 10-JAN A 12 10-JAN B 12 11-JAN A 10

我的数据集包含以下字段:

User        Product          Time
 A            10            10-JAN
 B            14            10-JAN
 C            20            10-JAN
 A            12            10-JAN
 B            12            11-JAN
 A            10            12-JAN
 D            08            12-JAN
 A            13            12-JAN
 B            14            13-JAN
 C            20            13-JAN
 A            12            14-JAN
 C            21            14-JAN
 A            10            15-JAN
等等

我只想拉出并显示那些以前购买过类似产品的用户,带有购买时间戳。比如说:

ProductBought      User     Time           count
    10              A        10-JAN          3
    10              A        12-JAN          3
    10              A        15-JAN          3
    12              A        10-JAN          2
    12              A        14-JAN          2
    14              B        10-JAN          2
    14              B        13-JAN          2
    20              C        10-JAN          2
    20              C        13-JAN          2
等等

我试着像这样使用移位函数

df.sort_values(by=['User','Time'],ascending=True)    
df[(df.User==df.User.shift())&(df.productBought==df.productBought.shift()]
但是我并没有用这个得到所有的结果。例如,仅捕获具有相同产品的连续结果。在我们的例子中,因为在用户A再次购买10之前,它购买了12,所以它没有捕捉到这一点。 此外,如果同一用户拥有相同产品的两个连续记录,则会显示最新的记录,如下所示:

df==df.shift()

仅显示上次遇到的记录,而不是具有相同产品的所有记录。
有什么方法可以实现上面显示的内容吗?

您可以使用duplicated获取具有重复产品用户对的行,即用户以前购买过产品

df2 = df[df.duplicated(['Product', 'User'], keep=False)]
然后,你可以做排序等

要了解购买产品的次数,您可以使用

df2.groupby(['Product', 'User']).count()

您可以使用duplicated获取具有重复产品用户对的行,即用户以前购买过产品

df2 = df[df.duplicated(['Product', 'User'], keep=False)]
然后,你可以做排序等

要了解购买产品的次数,您可以使用

df2.groupby(['Product', 'User']).count()

使用groupby怎么样?您可以调用groupby(['Time','User','Product'])使用groupby怎么样?你可以打电话给groupby(['Time','User','Product'])我们也可以了解产品的购买次数吗?你可以使用groupby和count。上面更新了答案。是的,我知道了。谢谢你,蒂姆!这是有用的。我们还可以了解产品的购买次数吗?您可以使用groupby和count。上面更新了答案。是的,我知道了。谢谢你,蒂姆!这是有用的