Maison  >  Article  >  développement back-end  >  Comment calculer des valeurs basées sur les données de la ligne précédente à l'aide de la fonction apply de pandas ?

Comment calculer des valeurs basées sur les données de la ligne précédente à l'aide de la fonction apply de pandas ?

DDD
DDDoriginal
2024-10-28 03:40:01149parcourir

How to Calculate Values Based on Previous Row Data Using pandas' apply Function?

Utilisation de la fonction apply de Pandas pour calculer des valeurs en fonction des valeurs de la ligne précédente

Dans Pandas, la fonction apply permet l'application de fonctions personnalisées à chaque ligne d’un DataFrame. Cela peut s'avérer particulièrement utile lorsque les calculs nécessitent de référencer les valeurs des lignes précédentes du DataFrame.

Considérez le scénario suivant : nous avons un DataFrame avec les colonnes A, B, C et D. Nous devons calculer la colonne C pour la première ligne comme valeur de la colonne D. Par la suite, C pour les lignes suivantes est calculé en multipliant la valeur C de la ligne précédente par la valeur A de la ligne actuelle et en ajoutant le B de la ligne actuelle.

Malgré les tentatives d'utilisation de apply et shift, nous rencontrons une erreur clé due au calcul de C se produisant également dans la fonction apply. Pour résoudre ce problème, nous pouvons adopter l'approche suivante :

  1. Calculer explicitement la première ligne :

    • Attribuer la valeur de D au première ligne de C en utilisant df.loc[0, 'C'] = df.loc[0, 'D'].
  2. Itérer et calculer les lignes suivantes :

    • Utilisez une boucle for pour parcourir les lignes restantes, en calculant C pour chaque ligne comme suit :

      • df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A'] df.loc[i, 'B']

En suivant cette approche, nous nous assurons que C pour chaque ligne est disponible avant de calculer les valeurs des lignes suivantes. Le DataFrame résultant s'alignera sur le résultat souhaité :

  Index_Date   A   B    C    D
0 2015-01-31  10  10   10   10
1 2015-02-01   2   3   23   22
2 2015-02-02  10  60  290  280

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn