Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menilai Ungkapan Secara Dinamik daripada Formula dalam Panda menggunakan pd.eval?

Bagaimana untuk Menilai Ungkapan Secara Dinamik daripada Formula dalam Panda menggunakan pd.eval?

Barbara Streisand
Lepaskan: 2024-11-25 02:31:13
asal
836 orang telah melayarinya

How to Dynamically Evaluate Expressions from Formulas in Pandas using pd.eval?

Menilai secara dinamik ungkapan daripada formula dalam Panda

Penilaian ungkapan aritmetik pada satu atau lebih lajur bingkai data menggunakan pd.eval adalah tugas biasa, terutamanya apabila mengautomasikan aliran kerja. Pertimbangkan coretan kod berikut:

`x = 5
df2['D'] = df1['A'] (df1['B'] * x)``

Kod ini menambah lajur baharu D kepada df2 dengan menjalankan operasi pada lajur A dan B daripada df1, dan mendarabkan hasilnya dengan pembolehubah x. Matlamatnya adalah untuk mengulangi manipulasi data ini secara dinamik, memanfaatkan keupayaan pd.eval untuk melaksanakan ungkapan sebagai rentetan.

Pertama, mari kita perkenalkan DataFrames input:

import pandas as pd
import numpy as np

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

df1

   A  B  C  D
0  5  0  3  3
1  7  9  3  5
2  2  4  7  6
3  8  8  1  6
4  7  7  8  1

df2

   A  B  C  D
0  5  9  8  9
1  4  3  0  3
2  5  0  2  3
3  8  1  3  3
4  3  7  0  1
Salin selepas log masuk

Untuk menilai ungkapan secara dinamik menggunakan pd.eval, seseorang boleh menggunakan kod berikut:

hasil = pd.eval('df1.A (df1.B * x)')

Barisan kod ini mencipta DataFrame baharu yang dipanggil hasil yang mengandungi ungkapan yang dinilai. Fungsi eval juga boleh digunakan untuk melaksanakan penilaian bersyarat, seperti:

pd.eval('df1.A > df2.A')

Untuk menetapkan hasil ungkapan kembali kepada df2, gunakan sintaks berikut:

df2['D'] = pd.eval('df1.A (df1.B * x)', target=df2)

Untuk menyampaikan hujah di dalam rentetan ungkapan, gunakan simbol @:

pd.eval('df1.A (df1. B * @x)', local_dict={'x': 5})

Untuk prestasi maksimum, pertimbangkan perkara berikut argumen:

parser='python' untuk mengawal peraturan sintaks dan memastikan konsistensi dengan keutamaan pengendali Python.
engine='numexpr' untuk penilaian yang lebih pantas menggunakan hujung belakang numexpr yang dioptimumkan.
Ini sepatutnya memberi anda dengan pemahaman menyeluruh tentang cara menilai secara dinamik ungkapan daripada formula dalam Panda menggunakan pd.eval.

Atas ialah kandungan terperinci Bagaimana untuk Menilai Ungkapan Secara Dinamik daripada Formula dalam Panda menggunakan pd.eval?. 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