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",
)
Nach dem Login kopieren
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",
)
Nach dem Login kopieren
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!