簡介:
基於連接條件和日期約束合併資料幀可以是資料幀分析中的常見任務。雖然 pandas 提供了各種合併選項,但透過在合併過程中進行過濾來優化效能可能有利於避免處理大型中間資料幀。本文討論了使用 SQL 來實現這種效率的替代方法。
與過濾合併:
提供的程式碼片段示範了使用 pd 合併兩個資料幀 A 和 B。 merge() 函數,然後根據日期條件篩選結果。然而,由於在過濾之前創建了中間資料幀,因此這種方法在處理大型資料幀時可能不是最佳的。
SQL 作為替代方案:
SQL 提供了一種更有效的方法在查詢本身中透過篩選來執行此合併。透過連接到記憶體資料庫,我們可以編寫一個查詢,一步執行連接和日期過濾。
代碼示例:
以下代碼演示SQL 方法:
<code class="python">import pandas as pd import sqlite3 # Connect to in-memory database conn = sqlite3.connect(':memory:') # Write dataframes to tables terms.to_sql('terms', conn, index=False) presidents.to_sql('presidents', conn, index=False) war_declarations.to_sql('wars', conn, index=False) # SQL query 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 ''' # Read SQL query results into dataframe df = pd.read_sql_query(qry, conn)</code>
結果:
產生的資料框df 包含A 中的日期與B 中的日期條件相符的行。在此特定示例中,它返回兩次宣戰的總統和任期。
優點:
此方法有以下優點:
以上是如何使用 SQL 最佳化具有日期約束的 DataFrame 合併?的詳細內容。更多資訊請關注PHP中文網其他相關文章!