Menggabungkan dua bingkai data panda berdasarkan pengecam dan keadaan di mana tarikh dalam satu bingkai data berada dalam julat tarikh dalam bingkai data lain boleh menjadi satu cabaran. Persoalan timbul jika terdapat cara yang lebih cekap untuk melaksanakan operasi ini dan bukannya pendekatan yang dicadangkan untuk menggabungkan tanpa syarat diikuti dengan penapisan tarikh.
Seperti yang ditunjukkan dalam soalan , tugas ini adalah remeh dalam SQL kerana ketersediaan keupayaan penapisan tarikh terbina dalam. Walau bagaimanapun, untuk mencapai hasil yang sama dalam panda mungkin memerlukan proses dua langkah seperti yang diterangkan dalam soalan.
Peningkatan yang dicadangkan melibatkan memanfaatkan kuasa SQL walaupun dalam persekitaran Python . Begini cara untuk melakukannya:
<code class="python">import pandas as pd import sqlite3 # Convert the pandas dataframes into temporary SQL tables conn = sqlite3.connect(':memory:') df1.to_sql('table_a', conn, index=False) df2.to_sql('table_b', conn, index=False) # Construct an SQL query that performs the merge and date filtering in one operation query = """ SELECT * FROM table_a AS a JOIN table_b AS b ON a.id = b.id WHERE a.date BETWEEN b.min_date AND b.max_date; """ # Execute the query and retrieve the merged dataframe merged_df = pd.read_sql_query(query, conn)</code>
Pendekatan ini membolehkan penapisan yang cekap dalam gabungan, mengelakkan penciptaan kerangka data perantaraan yang berpotensi besar.
Sementara gabungan tanpa syarat diikuti dengan pendekatan penapisan berfungsi, penyelesaian yang dipertingkatkan yang dibentangkan di sini menawarkan kecekapan dan prestasi yang lebih baik dengan menggunakan keupayaan penapisan tarikh terbina dalam SQL dalam persekitaran Python.
Atas ialah kandungan terperinci Bolehkah SQL Meningkatkan Penggabungan DataFrame Pandas dengan Penapisan Julat Tarikh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!