Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich arithmetische Ausdrücke in Pandas DataFrames dynamisch auswerten?

Wie kann ich arithmetische Ausdrücke in Pandas DataFrames dynamisch auswerten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-17 12:37:02850Durchsuche

How can I dynamically evaluate arithmetic expressions within Pandas DataFrames?

Ausdrücke aus einer Formel mit Pandas dynamisch auswerten

Problem:

Arithmetische Ausdrücke mit auswerten pd.eval unter Berücksichtigung von Variablen, Operatorpriorität und Datenrahmenkomplexität Strukturen.

Antwort:

1. Mit pd.eval

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

Argumente:

  • Ausdruck: Die als Zeichenfolge auszuwertende Formel.
  • local_dict: Ein Wörterbuch, das Variablen enthält, die nicht im globalen Wörterbuch definiert sind Namespace.
  • Ziel: Der Datenrahmen, dem das Ergebnis zugewiesen werden soll.
  • Parser: Gibt den Parser an, der zum Parsen des Ausdrucks verwendet wird (Pandas oder Python). ).
  • engine: Gibt das Backend an, das zur Auswertung des verwendet wird Ausdruck (numexpr oder python).

2. Mit df.eval

df1.eval(
    "A + (B * @x)",
    target=df2,
    parser="python",
    engine="numexpr",
)

Argumente:

  • df: Der Datenrahmen, auf dem der Ausdruck ausgewertet wird.
  • Ausdruck: Die Formel, die als Zeichenfolge ausgewertet werden soll.
  • Ziel: Der Datenrahmen, dem das Ergebnis zugewiesen werden soll bis.
  • Parser: Gibt den Parser an, der zum Parsen des Ausdrucks verwendet wird (Pandas oder Python).
  • Engine: Gibt das Backend an, das zum Auswerten des Ausdrucks verwendet wird (numexpr oder Python).

3. Unterschiede zwischen pd.eval und df.eval

  • pd.eval wertet Ausdrücke für beliebige Objekte aus, während df.eval Ausdrücke speziell für Datenrahmen auswertet.
  • df.eval erfordert Spaltennamen werden mit dem at-Symbol (@) vorangestellt, um Verwirrung zu vermeiden, während dies bei pd.eval der Fall ist nicht.
  • df.eval kann mehrzeilige Ausdrücke mit Zuweisung verarbeiten, pd.eval dagegen nicht.

Zusätzliche Hinweise:

  • Stellen Sie sicher, dass der Ausdruck in doppelte Anführungszeichen gesetzt wird.
  • x = 5 weist der Variablen x den Wert 5 zu im globalen Namespace.
  • parser='python' wird empfohlen, wenn es um Pythons Operator-Rangfolgeregeln und komplexe Ausdrücke geht.
  • target=df2 stellt sicher, dass das Ergebnis dem angegebenen Datenrahmen zugewiesen wird.
  • engine='numexpr' nutzt die optimierte Numexpr-Engine für Verbesserungen Leistung.
  • inplace=True kann verwendet werden, um den ursprünglichen Datenrahmen direkt zu ändern.
  • df.query kann auch für bedingte Ausdrücke verwendet werden und Zeilen zurückgeben, die die angegebenen Kriterien erfüllen.

Das obige ist der detaillierte Inhalt vonWie kann ich arithmetische Ausdrücke in Pandas DataFrames dynamisch auswerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn