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

标签 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            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

等等。

我试过像这样使用shift函数

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()

关于python - 查找并打印子元素具有相似值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55069814/

相关文章:

python - 如何在networkx中使用python随机排列图的节点?

python - DataFrame 在日期范围内重新采样

python - 在 Pandas 中计算 YTD 总数

python - 获取 B 列中 A 列中找到的字符串数,并在新列中返回值

algorithm - 为什么斐波那契数列在计算机科学中很重要?

python - 如何使用 openpyxl 确定 Excel 工作表是否不包含任何值?

Python App Engine 调试/开发模式

python - Pandas 多索引子集选择

algorithm - 我们真的需要 Dijkstra 算法中顶点的 "visited or not"信息吗?

java - 根据预定义的规则集将输入集分类为类别