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

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