Gabungkan Bingkai Data Panda Berdasarkan Julat Nilai dan Pengecam
Dalam panda, menggabungkan bingkai data menggunakan keadaan berasaskan julat dan pengecam boleh dicapai melalui gabungan operasi penggabungan dan penapisan. Walau bagaimanapun, pendekatan ini boleh menjadi tidak cekap apabila bekerja dengan set data yang besar. Pendekatan alternatif yang memanfaatkan SQL boleh memberikan prestasi yang lebih baik.
Mari kita pertimbangkan contoh di mana kita mempunyai dua bingkai data, A dan B. Bingkai data A mengandungi tarikh (fdate) dan pengecam (cusip), manakala Bingkai Data B termasuk tarikh (namedt dan nameenddt) dan pengecam yang sama (ncusip). Matlamat kami adalah untuk menggabungkan bingkai data ini di mana fdate dalam A berada dalam julat tarikh yang ditakrifkan oleh namedt dan nameenddt dalam B.
Kod Python berikut menunjukkan pendekatan panda tradisional:
<code class="python">df = pd.merge(A, B, how='inner', left_on='cusip', right_on='ncusip') df = df[(df['fdate']>=df['namedt']) & (df['fdate']<=df['nameenddt'])]</code>
Walaupun pendekatan ini berfungsi, ia melibatkan penggabungan bingkai data tanpa syarat dan kemudian menapis berdasarkan keadaan tarikh, yang boleh menjadi mahal dari segi pengiraan untuk set data yang besar.
Pendekatan alternatif ialah menggunakan pertanyaan SQL:
<code class="python">import pandas as pd import sqlite3 # Create a temporary database in memory conn = sqlite3.connect(':memory:') # Write the dataframes to tables A.to_sql('table_a', conn, index=False) B.to_sql('table_b', conn, index=False) # Construct the SQL query query = ''' SELECT * FROM table_a JOIN table_b ON table_a.cusip = table_b.ncusip WHERE table_a.fdate BETWEEN table_b.namedt AND table_b.nameenddt ''' # Execute the query and create a Pandas dataframe df = pd.read_sql_query(query, conn)</code>
Pendekatan ini mempunyai beberapa kelebihan:
Kesimpulannya, memanfaatkan SQL untuk menggabungkan bingkai data berdasarkan keadaan dan pengecam berasaskan julat menawarkan faedah prestasi berbanding operasi tradisional Panda, terutamanya untuk set data yang lebih besar.
Atas ialah kandungan terperinci Bagaimana untuk Mencantumkan Bingkai Data Pandas Dengan Cekap Berdasarkan Julat Nilai dan Pengecam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!