簡體   English   中英

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

[英]Find and print all the rows whose sub-elements have similar values

我的數據集包含以下字段:

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

僅顯示最后遇到的記錄,而不是所有具有相同產品的記錄。 有什么方法可以實現上面顯示的內容?

您可以使用重復的獲得具有重復的產品-用戶對的行,即用戶之前購買過該產品。

df2 = df[df.duplicated(['Product', 'User'], keep=False)]

然后,您可以進行排序等...

要找出購買產品的次數,您可以使用

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM