2016-11-10 41 views
2

這裏是我的原始數據: enter image description here如何改變這種數據幀與Python才能使用協同過濾

正如你可以see.The cust_id列記錄了消費記錄每個ID.And第二列是指產品名字,第三是他們每次購買的消費者。

我想這樣的數據: enter image description here

結果數據顯示每個客戶購買了哪些產品,以及如何many.If他們從來不買,那麼數據是None.I認爲這是稀疏矩陣。

我已經嘗試了很多方法,但仍無法修復它.....

也許大熊貓?NumPy的?

+0

由或許組或get_dummies東西.......這真的聽到我...... –

回答

1

有重複的問題,我加上最後一行與相同的cust_idprd_id值來演示它。

print (df) 
    cust_id prd_id prd_number 
8  462  40   1 
9  462  46   3 
10  462  59   1 
11  462  63   13 
12  462  67   1 
13  462  82   12 
14  462  88   1 
15  462  163   3 
16  463  68   1 
17  463  90   1 
18  463  159   2 
16  464  93   11 
20  464  94   8 
21  464  96   1 
22  464  142   4 
23  465  50   1 
24  465  50   5 

這時需要通過cust_idgroupbyprd_id與aggreagting一些功能像mean()sum()。最後unstack與更換NaN0

print (df.groupby(['cust_id', 'prd_id'])['prd_number'].sum().unstack(fill_value=0)) 
prd_id 40 46 50 59 63 67 68 82 88 90 93 94 96 142 \ 
cust_id                   
462  1 3 0 1 13 1 0 12 1 0 0 0 0 0 
463  0 0 0 0 0 0 1 0 0 1 0 0 0 0 
464  0 0 0 0 0 0 0 0 0 0 11 8 1 4 
465  0 0 6 0 0 0 0 0 0 0 0 0 0 0 

prd_id 159 163 
cust_id    
462  0 3 
463  2 0 
464  0 0 
465  0 0 
+0

哇,你是awesome.It運作良好,結果是我想要的。但是我對平均值()感到困惑。我不明白爲什麼不sum()。 –

+0

這取決於你;)你可以總結或表示,你需要什麼。沒問題,我編輯答案。 – jezrael