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
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!