基於值範圍和標識符合併Pandas 資料幀
在pandas 中,可以使用基於範圍的條件和標識符來實現合併資料幀透過合併和過濾操作的組合。然而,在處理大型資料集時,這種方法可能效率低。利用 SQL 的另一種方法可以提供更好的效能。
讓我們考慮一個範例,其中我們有兩個資料幀 A 和 B。資料幀 A 包含日期 (fdate) 和識別碼 (cusip),而資料幀 B 包含日期(namedt 和 nameenddt)和相同的識別碼 (ncusip)。我們的目標是合併這些資料幀,其中 A 中的 fdate 落在 B 中的 namet 和 nameenddt 定義的日期範圍內。
以下Python 程式碼示範了傳統的pandas 方法:
<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>
雖然這種方法有效,但它涉及無條件合併資料幀,然後根據日期條件進行過濾,這對於大型資料集來說計算成本可能很高。
另一個方法是使用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>
這個方法有幾個優點:
總之,使用 SQL 根據基於範圍的條件和標識符合併資料幀比傳統的 Pandas 操作具有效能優勢,特別是對於較大的資料集。
以上是如何根據值範圍和標識符有效合併 Pandas Dataframe?的詳細內容。更多資訊請關注PHP中文網其他相關文章!