我需要对userId X movieId进行分类,并且我有两列:userId
和movieId
。
userId movieId
60265 2123
60265 2291
60265 2329
60265 2355
60265 2389
60265 2396
60265 2402
60265 2403
60265 2421
19254 2389
19254 2396
19254 2402
19254 2403
19254 2421
19254 2123
19254 2291
19254 2329
每个userId
都观看了多个movieId
。我假装使用直方图来分发每个用户观看的所有电影。
userId/movieId 2123 2291 2329 2355 2389 2396 2402 2403 2421 2592 2596
60265 1 1 1 1 1 1 1 1 1 0 0
19254 1 1 1 0 1 1 1 1 1 0 0
如何使用函数get_dummies()
来构造类似的userId X movieId表?
答案 0 :(得分:3)
您像这样使用pd.get_dummies
:
(pd.get_dummies(df.set_index('userId'), columns=['movieId'], prefix='', prefix_sep='')
.sum(level=0)
.reset_index())
输出:
userId 2123 2291 2329 2355 2389 2396 2402 2403 2421
0 60265 1 1 1 1 1 1 1 1 1
1 19254 1 1 1 0 1 1 1 1 1
答案 1 :(得分:2)
您需要设置索引,然后使用get_dummies,这是完整的代码
import pandas as pd
data = {"movie": [2123, 2126, 2123], "userId": [1, 1, 2]}
df = pd.DataFrame(data)
df.set_index('userId', inplace=True)
pd.concat([df,pd.get_dummies(df['movie'], prefix='movie')], axis=1).drop(['movie'], axis=1, inplace=True)