pandas : `SettingWithCopyWarning`, que faire ?
poze 3 months ago605 gadefr
actifs = df[df['statut'] == 'actif']
actifs['score'] = actifs['score'] * 2
J'obtiens SettingWithCopyWarning. Ma modification est-elle appliquée ou pas ?
Dyagnostik IA
Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.
1 Repons
L'avertissement signifie que actifs peut être une vue ou une copie de df, et que pandas ne peut pas garantir laquelle. Ta modification peut donc ne pas se propager comme tu l'imagines.
Selon l'intention :
Modifier df lui-même : utilise .loc en une seule opération :
df.loc[df['statut'] == 'actif', 'score'] *= 2
Travailler sur un sous-ensemble indépendant : fais une copie explicite :
actifs = df[df['statut'] == 'actif'].copy()
actifs['score'] *= 2
À partir de pandas 3.0, le Copy-on-Write est activé par défaut : tout sous-ensemble se comporte comme une copie, et l'avertissement disparaît. Autant écrire dès maintenant du code compatible (.loc ou .copy() explicites). Tu peux l'activer dès aujourd'hui avec pd.options.mode.copy_on_write = True.
Konekte pou di lòt moun si li te mache.
Sign in and verify your email to post an answer.