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
Freigeben: 2024-11-15 10:07:02
Original
467 Leute haben es durchsucht

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()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

# 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)")

Nach dem Login kopieren

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 .

1

2

3

4

5

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)

Nach dem Login kopieren

2. Verwendung von df.eval()

1

2

3

4

5

# Evaluate expression in df1

result = df1.eval("A + B")

 

# Perform variable substitution

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

Nach dem Login kopieren

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.

1

2

# Query df1

df1.query("A > B")

Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage