第一篇文章,盡我所能描述我的問題。讓我知道是否需要根據格式調整任何內容或澄清問題的任何方面。謝謝!Pandas GroupBy列值,並根據每組中的值創建固定大小的列表
我有大熊貓電影評級的數據框,我需要爲每部電影創建用戶評分向量。我正在尋找更高效的方法(使用熊貓/ numpy操作或向量化),以便處理數據集中的26M行或用戶電影評級對。
電影等級的數據幀看起來像這樣: 輸入:
movieId userId rating
1 1 1.0
1 2 4.5
1 5 5.0
1 8 5.0
1 10 5.0
2 1 2.0
2 3 4.5
2 5 5.0
2 6 3.0
2 8 4.0
輸出:
答案= MovieID
值=密集爲每個用戶收視的陣列,0表示用戶沒有評價電影。
{
0:[1.0, 4.5, 0.0, 0.0, 5.0, 0.0, 0.0, 5.0, 0.0, 5.0]
1:[2.0, 0.0, 4.5, 0.0, 5.0, 3.0, 0.0, 4.0, 0.0, 0.0]
}
我目前有這個功能,它正確執行工作,但不縮放我需要處理的數據量。 user_rating_by_movie
是一個匹配輸入形式的全球熊貓數據框。 num_users
是用作矢量長度的最大用戶ID。
def build_rating_vector_for_movie(movie_id, num_users):
rating_vector = [0] * num_users
movie_group = user_rating_by_movie.get_group(movie_id)
for u, r in zip(movie_group.userId.values, movie_group.rating.values):
rating_vector[u - 1] = r
movie_user_ratings[movie_id] = rating_vector
比較 1循環,最好的3:每次循環6.13秒。 斯科特波士頓的解決方案: 1循環,最好每循環3:902毫秒。 感謝您的幫助。 – cgels