web-dev-qa-db-fra.com

Python Pandas - Comprendre inplace = True

Plusieurs fois dans la bibliothèque pandas, il existe une option pour modifier l'objet in-situ, comme avec l'instruction suivante ...

df.dropna(axis='index', how='all', inplace=True)

Je suis curieux de savoir ce qui est renvoyé et comment l’objet est traité lorsque inplace=True est transmis par rapport à quand inplace=False.

Toutes les opérations modifiant self lorsque inplace=True? Et quand inplace=False est un nouvel objet créé immédiatement, tel que new_df = self puis new_df est renvoyé?

44
Aran Freel

Lorsque inplace=True est transmis, les données sont renommées à la place (elles ne renvoient rien). Vous devez donc utiliser:

df.an_operation(inplace=True)

Lorsque inplace=False est passé (il s'agit de la valeur par défaut, il n'est donc pas nécessaire), effectue l'opération et renvoie une copie de l'objet. Vous devez donc utiliser:

df = df.an_operation(inplace=False) 

Alors:

if inplace == False:
    Assign your result to a new variable
else
    No need to assign
57
ECH

La façon dont je l'utilise est

# Have to assign back to dataframe (because it is a new copy)
df = df.some_operation(inplace=False) 

Ou

# No need to assign back to dataframe (because it is on the same copy)
df.some_operation(inplace=True)

CONCLUSION:

 if inplace is False
      Assign to a new variable;
 else
      No need to assign
29
Nabin

J'utilise habituellement avec numpy.

vous utilisez inplace = True, si vous ne souhaitez pas enregistrer les données mises à jour dans la même variable

data["column1"].where(data["column1"]< 5, inplace=True)

c'est pareil que ...

data["column1"] = data["column1"].where(data["column1"]< 5)
1
hyukkyulee