2 votes

Remplacer les valeurs de plusieurs colonnes dans un dataframe Pandas de manière plus efficace

J'ai un DataFrame, df, où je voudrais remplacer plusieurs valeurs

user1

user2

user3

apple

yoo

apple

mango

ram

mango

Au lieu de faire

df['user1'] = df['user1'].replace(['apple','mango'], [0, 1])
df['user3'] = df['user1'].replace(['apple','mango'], [0, 1])
df['user2'] = df['user2'].replace(['yoo','ram'], [2, 3])

pour obtenir le DataFrame final de

user1

user2

user3

0

2

0

1

3

1

Y a-t-il un moyen de rendre le code ci-dessus plus efficace de telle sorte que je puisse changer les valeurs de apple, mango, yoo et ram avec une seule ligne de code ?

2voto

jezrael Points 290608

Si besoin de définir une plage par des valeurs uniques par colonnes, utilisez :

cols = ['user1','user2','user3']
s = df[cols].unstack()
df[cols] = pd.Series(pd.factorize(s)[0], index=s.index).unstack(0)
print (df)
   user1  user2  user3
0      0      2      0
1      1      3      1

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