"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 basée sur les valeurs des lignes précédentes dans Pandas à l'aide de la fonction « apply() » ?

Comment calculer une colonne basée sur les valeurs des lignes précédentes dans Pandas à l'aide de la fonction « apply() » ?

Publié le 2024-11-01
Parcourir:987

How to Calculate a Column Based on Previous Row Values in Pandas Using the `apply()` Function?

Application de calculs avec les valeurs de ligne précédentes dans Pandas

Dans Pandas, relever le défi d'incorporer les valeurs de ligne précédentes dans les calculs lors de la manipulation des données n'est pas rare. Un de ces scénarios implique la nécessité d'utiliser la valeur de la ligne précédente lors du calcul d'une nouvelle colonne à l'aide de la fonction apply().

Considérez un scénario dans lequel nous avons un DataFrame avec la structure suivante :

Index_Date    A   B     C    D
================================
2015-01-31    10   10   Nan   10
2015-02-01     2    3   Nan   22
2015-02-02    10   60   Nan  280
2015-02-03    10  100   Nan  250

Notre objectif est de remplir la colonne « C » avec des valeurs calculées. Pour la première ligne, « C » est dérivé de « D ». Pour les lignes suivantes, « C » est calculé en multipliant la valeur « C » de la ligne précédente par la valeur « A » de la ligne actuelle et en ajoutant la valeur « B ».

Approche

Pour y parvenir, nous utilisons une combinaison d'initialisation et d'itération dans la fonction apply().

  1. Initialisez la valeur « C » pour la première ligne en utilisant la valeur de « D » .
df.loc[0, 'C'] = df.loc[0, 'D']
  1. Parcourir les lignes restantes et calculer les valeurs 'C' :
for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i - 1, 'C'] * df.loc[i, 'A']   df.loc[i, 'B']

Résultat

Cette approche remplira efficacement la colonne « C » avec les valeurs calculées souhaitées :

Index_Date    A   B    C    D
================================
2015-01-31  10  10   10   10
2015-02-01   2   3   23   22
2015-02-02  10  60  290  280
2015-02-03  10  100  3000  250
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