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

Wie kann ich Ausdrücke in Pandas dynamisch auswerten?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-15 10:07:02461Durchsuche

How Can I Dynamically Evaluate Expressions in Pandas?

Ausdrücke dynamisch mit Pandas auswerten

Problemstellung

Sie möchten mit pd.eval dynamische Operationen an DataFrames ausführen, einschließlich Variablensubstitution und komplexer Arithmetik .

Lösung

1. Verwendung von pd.eval()

# Import necessary libraries
import pandas as pd
import numpy as np

# Create sample DataFrames
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'))

# Evaluate expression using a variable
x = 5
result = pd.eval("df1.A + (df1.B * x)")

# Alternatively, assign the result to a new column
pd.eval("df2['D'] = df1.A + (df1.B * x)")

Argumente für die Leistung

Die folgenden Argumente können verwendet werden, um die Leistung von pd.eval zu optimieren:

  • engine='numexpr': Verwenden Sie die hochoptimierte Numexpr-Engine.
  • parser='pandas': Verwenden Sie den standardmäßigen Pandas-Parser, der sich an der Operatorpriorität von Pandas orientiert.
  • global_dict und local_dict: Stellen Wörterbücher globaler und lokaler Variablen zur Substitution bereit. Dadurch entfällt die Notwendigkeit, Variablen im globalen Namespace zu definieren.

Zuweisung und direkte Änderung

Sie können das Ergebnis von pd.eval mithilfe des Zielarguments direkt einem DataFrame zuweisen .

df3 = pd.DataFrame(columns=list('FBGH'), index=df1.index)
pd.eval("df3['B'] = df1.A + df2.A", target=df3)

# In-place modification
pd.eval("df2.B = df1.A + df2.A", target=df2, inplace=True)

2. Verwendung von df.eval()

# Evaluate expression in df1
result = df1.eval("A + B")

# Perform variable substitution
df1.eval("A > @x", local_dict={'x': 5})

Vergleich mit df.query()

Während pd.eval für die Auswertung von Ausdrücken geeignet ist, ist df.query() prägnanter und effizienter für bedingte Ausdrücke Abfragen, da es den DataFrame basierend auf einem booleschen Ausdruck filtert.

# Query df1
df1.query("A > B")

Das obige ist der detaillierte Inhalt vonWie kann ich Ausdrücke in Pandas 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