在这种情况下,如何使用get_dummies()?

时间:2018-10-12 17:04:23

标签: python pandas

我需要对userId X movieId进行分类,并且我有两列:userIdmovieId

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表?

2 个答案:

答案 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)