Comment calculer les valeurs de lignes séquentielles dans un DataFrame Pandas à l'aide de Apply et Shifting ?

Mary-Kate Olsen
Libérer: 2024-10-28 16:43:02
original
583 Les gens l'ont consulté

How to Calculate Sequential Row Values in a Pandas DataFrame Using Apply and Shifting?

Pandas applique des calculs de valeur de ligne séquentielle dans les dataframes

Lorsque vous travaillez avec des dataframes Pandas, vous pouvez rencontrer des situations où vous devez utiliser la valeur d'une ligne précédente dans un calcul. Cependant, cela peut présenter des défis, en particulier lorsque la valeur précédente est également calculée dans la même fonction d'application.

Considérez le cadre de données suivant :

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
Copier après la connexion

Nous souhaitons créer une nouvelle colonne, C , où :

  • Pour le 31/01/2015, C est égal à D.
  • Pour toutes les autres lignes, C est calculé comme le C de la ligne précédente multiplié par le A de la ligne actuelle , plus le B de la ligne actuelle.

L'utilisation d'une fonction apply et d'un shift avec une condition if-else peut ne pas fonctionner en raison d'erreurs clés. Au lieu de cela, nous pouvons suivre ces étapes :

Étape 1 : Initialiser la valeur dérivée

Tout d'abord, nous définissons la valeur C de la première ligne pour qu'elle soit égale à D :

df.loc[0, 'C'] = df.loc[0, 'D']
Copier après la connexion

Étape 2 : Itérer et calculer

Ensuite, nous parcourons les lignes restantes et calculons C en utilisant la valeur C de la ligne précédente :

for i in range(1, len(df)):
    df.loc[i, 'C'] = df.loc[i-1, 'C'] * df.loc[i, 'A'] + df.loc[i, 'B']
Copier après la connexion

Résultat :

  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
3 2015-02-03  10  100  3000  250
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!