Maison > développement back-end > Tutoriel Python > Comment évaluer dynamiquement des expressions à partir de formules dans Pandas à l'aide de pd.eval ?

Comment évaluer dynamiquement des expressions à partir de formules dans Pandas à l'aide de pd.eval ?

Barbara Streisand
Libérer: 2024-11-25 02:31:13
original
882 Les gens l'ont consulté

How to Dynamically Evaluate Expressions from Formulas in Pandas using pd.eval?

Évaluer dynamiquement une expression à partir d'une formule dans Pandas

L'évaluation d'expressions arithmétiques sur une ou plusieurs colonnes de dataframe à l'aide de pd.eval est une tâche courante, notamment lors de l'automatisation flux de travail. Considérez l'extrait de code suivant :

`x = 5
df2['D'] = df1['A'] (df1['B'] * x)``

Ce code ajoute une nouvelle colonne D à df2 en effectuant une opération sur les colonnes A et B de df1, et en multipliant le résultat par une variable x. L'objectif est de répéter cette manipulation de données de manière dynamique, en tirant parti de la capacité de pd.eval à exécuter des expressions sous forme de chaînes.

Tout d'abord, introduisons les DataFrames d'entrée :

import pandas as pd
import numpy as np

np.random.seed(0)
df1 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))
df2 = pd.DataFrame(np.random.choice(10, (5, 4)), columns=list('ABCD'))

df1

   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2

   A  B  C  D
0  5  9  8  9
1  4  3  0  3
2  5  0  2  3
3  8  1  3  3
4  3  7  0  1
Copier après la connexion

Pour évaluer l'expression de manière dynamique en utilisant pd.eval, on peut utiliser le code suivant :

result = pd.eval('df1.A (df1.B * x)')

Cette ligne de code crée un nouveau DataFrame appelé résultat qui contient l'expression évaluée. La fonction eval peut également être utilisée pour effectuer des évaluations conditionnelles, telles que :

pd.eval('df1.A > df2.A')

Pour attribuer le résultat de l'expression vers df2, utilisez la syntaxe suivante :

df2['D'] = pd.eval('df1.A (df1.B * x)', target=df2)

Pour passer un argument à l'intérieur de la chaîne d'expression, utilisez le symbole @ :

pd.eval('df1.A (df1. B * @x)', local_dict={'x': 5})

Pour des performances maximales, tenez compte des éléments suivants arguments :

parser='python' pour contrôler les règles de syntaxe et assurer la cohérence avec la priorité des opérateurs de Python.
engine='numexpr' pour une évaluation plus rapide à l'aide du backend numexpr optimisé.
Cela devrait vous fournir avec une compréhension complète de la façon d'évaluer dynamiquement des expressions à partir de formules dans Pandas à l'aide de pd.eval.

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 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