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