J'ai un simple DataFrame comme celui-ci:
Je souhaite sélectionner toutes les valeurs de la colonne "Première saison" et remplacer celles de 1990 par 1. Dans cet exemple, seul le Baltimore Ravens aurait remplacé le 1996 par 1 (en conservant intactes les données restantes).
J'ai utilisé les éléments suivants:
df.loc[(df['First Season'] > 1990)] = 1
Mais, il remplace toutes les valeurs de cette ligne par 1, et pas uniquement celles de la colonne "Première saison".
Comment puis-je remplacer uniquement les valeurs de cette colonne?
Vous devez sélectionner cette colonne:
In [41]:
df.loc[df['First Season'] > 1990, 'First Season'] = 1
df
Out[41]:
Team First Season Total Games
0 Dallas Cowboys 1960 894
1 Chicago Bears 1920 1357
2 Green Bay Packers 1921 1339
3 Miami Dolphins 1966 792
4 Baltimore Ravens 1 326
5 San Franciso 49ers 1950 1003
Donc, la syntaxe est la suivante:
df.loc[<mask>(here mask is generating the labels to index) , <optional column(s)> ]
Vous pouvez vérifier le docs et aussi le 10 minutes to pandas qui montre la sémantique
EDIT
Si vous voulez générer un indicateur booléen, vous pouvez simplement utiliser la condition booléenne pour générer une série booléenne et transtyper le type de données en int
, ce qui convertira True
et False
en 1
et 0
respectivement:
In [43]:
df['First Season'] = (df['First Season'] > 1990).astype(int)
df
Out[43]:
Team First Season Total Games
0 Dallas Cowboys 0 894
1 Chicago Bears 0 1357
2 Green Bay Packers 0 1339
3 Miami Dolphins 0 792
4 Baltimore Ravens 1 326
5 San Franciso 49ers 0 1003
Un peu tard pour la fête mais quand même - je préfère utiliser numpy où:
import numpy as np
df['First Season'] = np.where(df['First Season'] > 1990, 1, df['First Season'])