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

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