Bagaimanakah Saya Boleh Menilai Ungkapan Secara Dinamik dalam Panda?

Patricia Arquette
Lepaskan: 2024-11-15 10:07:02
asal
385 orang telah melayarinya

How Can I Dynamically Evaluate Expressions in Pandas?

Menilai Ungkapan Secara Dinamik dengan Panda

Pernyataan Masalah

Anda mahu melakukan operasi dinamik pada DataFrames menggunakan pd.eval, termasuk penggantian pembolehubah dan aritmetik kompleks .

Penyelesaian

1. Menggunakan 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)")
Salin selepas log masuk

Argumen untuk Prestasi

Argumen berikut boleh digunakan untuk mengoptimumkan prestasi pd.eval:

  • enjin='numexpr': Gunakan enjin numexpr yang sangat dioptimumkan.
  • parser='pandas': Gunakan penghurai panda lalai, yang sejajar dengan keutamaan pengendali Pandas.
  • global_dict dan local_dict: Bekalkan kamus pembolehubah global dan tempatan untuk penggantian. Ini mengelakkan keperluan untuk mentakrifkan pembolehubah dalam ruang nama global.

Tugasan dan Pengubahsuaian di tempat

Anda boleh menetapkan hasil pd.eval terus kepada DataFrame menggunakan hujah sasaran .

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)
Salin selepas log masuk

2. Menggunakan df.eval()

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

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

Perbandingan dengan df.query()

Walaupun pd.eval sesuai untuk menilai ungkapan, df.query() adalah lebih ringkas dan cekap untuk bersyarat pertanyaan, kerana ia menapis DataFrame berdasarkan ungkapan Boolean.

# Query df1
df1.query("A > B")
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menilai Ungkapan Secara Dinamik dalam Panda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan