Localisation du coupable de la définition de lawarning
lorsque vous tentez de modifier un dataframe en utilisant .loc [row_indexer, coli_indexer] = valeur, le "setwithCopyWarning" persiste. Ce problème découle 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
Initialement, il n'y a pas d'avertissements. Cependant, la création d'un nouveau DataFrame basé sur un sous-ensemble de DF:
new_df = df.loc[df.col1 > 2]
puis tente de modifier le nouveau DataFrame à l'aide .loc: [
new_df.loc[2, 'new_column'] = 100
déclenche Le avertissement.
Solution: Utilisation .Copy () Pour les cadres de données dérivés d'un sous-ensemble
pour résoudre ce problème, utilisez toujours la méthode .copy () lors de la création 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 invoquant .copy (), vous créez une copie indépendante du sous-ensemble, en évitant l'avertissement lors de la modification des valeurs.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3