Maison > développement back-end > Tutoriel Python > Comment évaluer des expressions arithmétiques dans Pandas à l'aide de « pd.eval » ?

Comment évaluer des expressions arithmétiques dans Pandas à l'aide de « pd.eval » ?

DDD
Libérer: 2024-11-15 08:13:02
original
219 Les gens l'ont consulté

How to Evaluate Arithmetic Expressions in Pandas Using `pd.eval`?

Évaluer dynamiquement des expressions à partir de formules dans Pandas

Défi

Évaluer des expressions arithmétiques à l'aide de pd.eval sur une ou plusieurs colonnes DataFrame, comme indiqué dans le exemple suivant :

x = 5
df2['D'] = df1['A'] + (df1['B'] * x)
Copier après la connexion

pd.eval Fonctions

pd.eval, df.eval et df.query sont trois fonctions étroitement liées pour évaluer les expressions dans Pandas. Chacun a ses propres variations subtiles, mais ils suivent tous des règles de syntaxe et une prise en charge de fonctionnalités similaires.

Fonctionnalités prises en charge :

  • Opérations arithmétiques
  • Opérations de comparaison
  • Opérations booléennes
  • Liste et tuple littéraux
  • Accès aux attributs
  • Expressions d'indice
  • Évaluation de variable simple

Règles de syntaxe :

Les expressions doivent être transmises sous forme de chaînes, avec les éléments suivants directives :

  • L'expression entière est une chaîne
  • Les variables de l'espace de noms global sont référencées par leurs noms
  • Des colonnes spécifiques sont accessibles via un accesseur d'attribut
  • Les parenthèses peuvent être utilisées pour remplacer la priorité des opérateurs

Clé Différences

pd.eval vs. df.eval

  • Accès aux colonnes : pd.eval nécessite des noms de colonnes avec indexation DataFrame, tandis que df.eval permet un accès direct aux noms de colonnes.
  • Expressions avec DataFrames : pd.eval est meilleur pour les opérations à l'échelle du dataframe, tandis que df.eval fonctionne sur des DataFrames spécifiques.

df.eval vs. df.query

  • Requête vs. Évaluation : df.query évalue les expressions conditionnelles et renvoie les lignes correspondantes. df.eval renvoie le résultat de l'expression elle-même.
  • Commodité : df.query est généralement plus concis à des fins d'interrogation.

Solution

Pour résoudre le défi original en utilisant pd.eval :

x = 5
pd.eval("df1.A + (df1.B * x)")
Copier après la connexion

Réaffectation

Pour réaffecter le résultat de l'expression à df2, utilisez le paramètre target :

pd.eval("D = df1.A + (df1.B * x)", target=df2)
Copier après la connexion

Passer des arguments à l'intérieur de l'expression

Pour passer x comme argument dans la chaîne d'expression, utilisez le @ symbole :

pd.eval("df1.A + (df1.B * @x)", local_dict={'x': x})
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal