3 votes

Comment puis-je utiliser get_dummies() dans ce cas ?

J'ai besoin de classer userId X movieId et j'ai deux colonnes : userId y 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

Chaque userId a plus d'un movieId a regardé. Je prétends utiliser l'histogramme pour distribuer tous les films regardés par chaque utilisateur.

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

Comment utiliser la fonction get_dummies() pour construire un tableau similaire de userId X movieId ?

3voto

Scott Boston Points 48995

Vous utilisez pd.get_dummies comme ceci :

(pd.get_dummies(df.set_index('userId'), columns=['movieId'], prefix='', prefix_sep='')
   .sum(level=0)
   .reset_index())

Sortie :

   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

2voto

BlueSheepToken Points 1829

Vous devez définir l'index puis utiliser get_dummies, voici le code complet

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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X