Localisation du coupable de SettingWithCopyWarning
Lors de la tentative de modification d'un DataFrame à l'aide de .loc[row_indexer, col_indexer] = value, le "SettingWithCopyWarning" persiste. Ce problème provient de l'accès à une tranche DataFrame à partir d'un autre DataFrame sans invoquer la méthode .copy().
Reproduction d'erreur étape par étape
Considérez le code suivant :
import pandas as pd d = {'col1': [1, 2, 3, 4], 'col2': [3, 4, 5, 6]} df = pd.DataFrame(data=d) df['new_column'] = None df.loc[0, 'new_column'] = 100
Au départ, il n'y a aucun avertissement. Cependant, créer un nouveau DataFrame basé sur un sous-ensemble de df:
new_df = df.loc[df.col1 > 2]
puis tenter de modifier le nouveau DataFrame à l'aide de .loc:
new_df.loc[2, 'new_column'] = 100
déclenche l'avertissement.
Solution : Utiliser .copy() pour les trames de données dérivées d'un sous-ensemble
Pour résoudre ce problème, utilisez toujours la méthode .copy() lors de la création d'un nouveau DataFrame basé sur un sous-ensemble d'un DataFrame existant.
new_df_copy = df.loc[df.col1 > 2].copy() new_df_copy.loc[2, 'new_column'] = 100
En appelant .copy(), vous créez une copie indépendante du sous-ensemble, évitant ainsi l'avertissement lors de la modification des valeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!