Menggabungkan Bingkai Data Panda dengan Syarat Julat Tarikh
Untuk menggabungkan dua bingkai data panda di mana satu nilai jatuh antara dua yang lain, pendekatan biasa melibatkan penggabungan bingkai data tanpa syarat pada pengecam dan kemudiannya menapis berdasarkan keadaan tarikh. Walau bagaimanapun, kaedah ini boleh membawa kepada ketidakcekapan ingatan.
Penyelesaian alternatif yang memanfaatkan kuasa SQL adalah dengan melaksanakan gabungan dan penapisan dalam pertanyaan SQL, seperti yang ditunjukkan di bawah:
<code class="python">import pandas as pd import sqlite3 # Create dataframes presidents = pd.DataFrame({"name": ["Bush", "Obama", "Trump"], "president_id":[43, 44, 45]}) terms = pd.DataFrame({'start_date': pd.date_range('2001-01-20', periods=5, freq='48M'), 'end_date': pd.date_range('2005-01-21', periods=5, freq='48M'), 'president_id': [43, 43, 44, 44, 45]}) war_declarations = pd.DataFrame({"date": [datetime(2001, 9, 14), datetime(2003, 3, 3)], "name": ["War in Afghanistan", "Iraq War"]}) # Create an in-memory database conn = sqlite3.connect(':memory:') # Write dataframes to database terms.to_sql('terms', conn, index=False) presidents.to_sql('presidents', conn, index=False) war_declarations.to_sql('wars', conn, index=False) # Execute SQL query to merge and filter dataframes qry = ''' select start_date PresTermStart, end_date PresTermEnd, wars.date WarStart, presidents.name Pres from terms join wars on date between start_date and end_date join presidents on terms.president_id = presidents.president_id ''' df = pd.read_sql_query(qry, conn) print(df)</code>
Output:
PresTermStart PresTermEnd WarStart Pres 0 2001-01-31 00:00:00 2005-01-31 00:00:00 2001-09-14 00:00:00 Bush 1 2001-01-31 00:00:00 2005-01-31 00:00:00 2003-03-03 00:00:00 Bush
Dengan melakukan gabungan dan penapisan dalam SQL, kami boleh mengelak daripada mencipta kerangka data perantaraan yang berpotensi besar, menghasilkan kecekapan memori yang dipertingkatkan.
Atas ialah kandungan terperinci Bagaimana untuk Mencantumkan Pandas DataFrames dengan Keadaan Julat Tarikh dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!