2015-10-18 105 views
1

的每個值我有一個數據幀,看起來像這樣:大熊貓:統一列的值的另一列

user_id category frequency 
0 user1 cat1 4 
1 user2 cat2 1 
2 user2 cat3 4 
3 user3 cat3 1 
4 user3 cat4 3 

對於我與他們的頻率相關聯的類別的每個用戶。 總共有4個類別(cat1,cat2,cat3,cat4),我想通過添加頻率等於零的缺失類別來擴展每個用戶的數據。

因此,預期的結果是:

user_id category frequency 
0 user1 cat1 4 
1 user1 cat2 0 
2 user1 cat3 0 
3 user1 cat4 0 
4 user2 cat1 0 
5 user2 cat2 1 
6 user2 cat3 4 
7 user2 cat4 0 
8 user3 cat1 0 
9 user3 cat2 0 
10 user3 cat3 1 
11 user3 cat4 3 

所以,現在每個用戶擁有所有的4類相關。是否有任何海峽前沿的解決方案來實現這一目標?

回答

1

可以在user_idcategory創建數據透視表,填充nan值與零個,堆棧category(這使得索引上user_idcategory數據幀),然後重置以匹配期望的輸出的索引。

>>> (df.pivot(index='user_id', columns='category', values='frequency') 
    .fillna(0) 
    .stack() 
    .reset_index() 

    user_id category 0 
0 user1  cat1 4 
1 user1  cat2 0 
2 user1  cat3 0 
3 user1  cat4 0 
4 user2  cat1 0 
5 user2  cat2 1 
6 user2  cat3 4 
7 user2  cat4 0 
8 user3  cat1 0 
9 user3  cat2 0 
10 user3  cat3 1 
11 user3  cat4 3 
+0

謝謝亞歷山大,太棒了! – Rami