Comment puis-je évaluer dynamiquement des expressions arithmétiques dans les Pandas DataFrames ?

Linda Hamilton
Libérer: 2024-11-17 12:37:02
original
793 Les gens l'ont consulté

How can I dynamically evaluate arithmetic expressions within Pandas DataFrames?

Évaluer dynamiquement des expressions à partir d'une formule à l'aide de Pandas

Problème :

Évaluer des expressions arithmétiques à l'aide pd.eval tout en tenant compte des variables, de la priorité des opérateurs et des structures complexes des dataframes.

Réponse :

1. Utilisation de pd.eval

pd.eval(
    "df1.A + (df1.B * x)",
    local_dict={"x": 5},
    target=df2,
    parser="python",
    engine="numexpr",
)
Copier après la connexion

Arguments :

  • expression : La formule à évaluer sous forme de chaîne.
  • local_dict : Un dictionnaire contenant des variables non définies dans l'espace de noms global.
  • target : La trame de données à laquelle attribuer le résultat.
  • parser : Spécifie l'analyseur utilisé pour analyser l'expression (pandas ou python).
  • engine : Spécifie le backend utilisé pour évaluer l'expression (numexpr ou python ).

2. Utilisation de df.eval

df1.eval(
    "A + (B * @x)",
    target=df2,
    parser="python",
    engine="numexpr",
)
Copier après la connexion

Arguments :

  • df : la trame de données sur laquelle l'expression est évaluée.
  • expression : La formule à évaluer sous forme de chaîne.
  • target : La trame de données à laquelle attribuer le résultat.
  • parser : Spécifie l'analyseur utilisé pour analyser l'expression (pandas ou python).
  • moteur : Spécifie le backend utilisé pour évaluer l'expression (numexpr ou python).

3. Différences entre pd.eval et df.eval

  • pd.eval évalue les expressions sur n'importe quel objet, tandis que df.eval évalue les expressions spécifiquement sur les dataframes.
  • df.eval nécessite précédant les noms de colonnes avec le symbole at (@) pour éviter toute confusion, contrairement à pd.eval.
  • df.eval peut gérer les expressions multilignes avec affectation, alors que pd.eval ne le peut pas.

Remarques supplémentaires :

  • Assurez-vous que l'expression est placée entre guillemets doubles.
  • x = 5 attribue la valeur 5 à la variable x dans l'espace de noms global .
  • parser='python' est recommandé lorsqu'il s'agit de règles de priorité des opérateurs et d'expressions complexes de Python.
  • target=df2 garantit que le résultat est attribué au dataframe spécifié.
  • engine='numexpr' utilise le moteur numexpr optimisé pour des performances améliorées.
  • inplace=True peut être utilisé pour modifier le dataframe d'origine en place.
  • df.query peut également être utilisé pour les expressions conditionnelles , renvoyant les lignes qui répondent aux critères spécifiés.

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