"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment calculer une colonne dans un DataFrame en utilisant les valeurs des lignes précédentes avec « apply() » ?

Comment calculer une colonne dans un DataFrame en utilisant les valeurs des lignes précédentes avec « apply() » ?

Publié le 2024-11-13
Parcourir:752

How to Calculate a Column in a DataFrame Using Previous Row Values with `apply()`?

Itération à travers des DataFrames avec des considérations de valeur précédentes à l'aide de apply()

Dans les pandas, la fonction apply() est couramment utilisée pour appliquer une fonction à chaque ligne d'un DataFrame . Cependant, des problèmes surviennent lorsque la valeur de la ligne précédente est également calculée à l'aide de la même méthode apply().

Considérez les éléments suivants DataFrame :

Index_DateABCD
2015-01-311010NaN10
01/02/201523NaN22
2015-02-0210 60NaN2 80
03/02/201510100NaN250

Le L'objectif est de dériver la colonne C :

  • Pour le 31/01/2015, définissez-la sur la valeur de D.
  • Pour les lignes suivantes, multipliez la valeur de la ligne précédente de C par le valeur de ligne actuelle de A et ajoutez-la à la valeur de ligne actuelle de B.

Solution :

Pour y parvenir, nous définissons d'abord la valeur initiale de C pour le 31/01/2015 :

df.loc[0, 'C'] = df.loc[0, 'D']

Ensuite, nous parcourons le lignes restantes et mettez à jour les valeurs C avec les calculs souhaités :

for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A']   df.loc[i, 'B']

Le DataFrame final après ceux-ci opérations :

Index_DateABCD
2015-01-311010101 0
01/02/2015232322
02/02/20151060290280
Dernier tutoriel Plus>

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