我在 Python 中有一個資料框,如下所示,我需要找到交易相同類別商品的客戶 (Customer_ID),并找出大多數相關客戶是否購買或出售相關類別。完成此操作后,我應該了解其中哪些正在使用交付、下載/上傳或兩者。避免重復行(例如 40275 的 customer_id 在軟體類別上重復三個)對我來說很重要,這些行應該算作一個。因此,我需要對具有相同類別的用戶進行分類,交付和下載/上傳而不重復。
| 顧客ID | 類別 | 型別 | 送貨 | 下載上載 |
|---|---|---|---|---|
| 40275 | 書 | 買 | 真的 | 真的 |
| 40275 | 軟體 | 賣 | 錯誤的 | 真的 |
| 40275 | 軟體 | 賣 | 錯誤的 | 真的 |
| 40275 | 軟體 | 賣 | 錯誤的 | 真的 |
| 39900 | 糖果食譜 | 賣 | 真的 | 真的 |
| 39900 | 書 | 買 | 真的 | 真的 |
| 39900 | 軟體 | 賣 | 真的 | 真的 |
| 35886 | 書 | 賣 | 錯誤的 | 真的 |
| 35886 | 書 | 買 | 錯誤的 | 真的 |
| 35886 | 糖果食譜 | 賣 | 錯誤的 | 真的 |
| 35886 | 軟體 | 賣 | 錯誤的 | 真的 |
| 40350 | 軟體 | 賣 | 真的 | 真的 |
| 28129 | 軟體 | 買 | 錯誤的 | 真的 |
| 41571 | 軟體 | 買 | 真的 | 真的 |
我試圖根據類別欄位獲取主資料幀的一個子集,但之后我不確定如何同時過濾所有這些欄位,因為有一些重復的行和一些單行。我應該如何在 Python 中解決這個問題?
我認為應該是這樣的輸出可能會有所幫助。但我沒有對交付或上傳列應用任何過濾器:
| 顧客ID | 類別 | 型別 | 送貨 | 下載上載 | 相同類別和型別的計數 |
|---|---|---|---|---|---|
| 40275 | 書 | 買 | 真的 | 真的 | 2 |
| 40275 | 軟體 | 賣 | 錯誤的 | 真的 | 4 |
| 39900 | 糖果食譜 | 賣 | 真的 | 真的 | 2 |
| 39900 | 書 | 買 | 真的 | 真的 | 2 |
| 39900 | 軟體 | 賣 | 真的 | 真的 | 4 |
| 35886 | 書 | 賣 | 錯誤的 | 真的 | 1 |
| 35886 | 書 | 買 | 錯誤的 | 真的 | 2 |
| 35886 | 糖果食譜 | 賣 | 錯誤的 | 真的 | 2 |
| 35886 | 軟體 | 賣 | 錯誤的 | 真的 | 4 |
| 40350 | 軟體 | 賣 | 真的 | 真的 | 4 |
| 28129 | 軟體 | 買 | 錯誤的 | 真的 | 2 |
| 41571 | 軟體 | 買 | 真的 | 真的 | 2 |
uj5u.com熱心網友回復:
你是不是看起來像這樣:
>>> df.drop_duplicates().assign(value=1) \
.pivot(index=['Customer_ID', 'Category', 'Delivery', 'Download/Upload'],
columns='Type', values='value') \
.fillna(0).astype(int).reset_index()
Type Customer_ID Category Delivery Download/Upload Buy Sell
0 28129 Software False True 1 0
1 35886 Book False True 1 1
2 35886 Confectionery recipe False True 0 1
3 35886 Software False True 0 1
4 39900 Book True True 1 0
5 39900 Confectionery recipe True True 0 1
6 39900 Software True True 0 1
7 40275 Book True True 1 0
8 40275 Software False True 0 1
9 40350 Software True True 0 1
10 41571 Software True True 1 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346801.html
上一篇:插入排序演算法的改進
