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。上面更新了答案。是的,我知道了。谢谢你,蒂姆!这是有用的