Как я могу использовать get_dummies () в этом случае? - PullRequest
0 голосов
/ 12 октября 2018

Мне нужно классифицировать 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?

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы используете 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
0 голосов
/ 12 октября 2018

Вам нужно установить индекс, затем использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...