給定兩個資料幀df_1 和df_2,其中df_1 包含日期時間列以及值A 和B, df_2 包含範圍日期時間值和對應的事件信息,一個常見的任務是根據條件合併這些資料幀df_1 中的日期時間值位於df_2中指定的範圍內。
實現此目的的簡單方法包括從 df_2 的開始列和結束列建立區間索引,並將閉合參數設為兩者。這確保了範圍是包含在內的。
df_2.index = pd.IntervalIndex.from_arrays(df_2['start'],df_2['end'],closed='both')
建立間隔索引後,我們可以使用 IntervalIndex 的 get_loc 方法來定位每行包含來自 df_1 的日期時間值的範圍。
df_1['event'] = df_1['timestamp'].apply(lambda x : df_2.iloc[df_2.index.get_loc(x)]['event'])
將此函數應用於 df_1 的日期時間列中的每個值,我們可以填入一個新列 event,其中包含對應的df_1 中每一行的 df_2 事件資訊。
這種方法提供了一種使用 Pandas 提供的強大區間索引功能基於範圍條件連接資料幀的有效方法。輸出將是一個資料框,其中包含 df_1 和 df_2 中的所有列,事件列為 df_1 中的每一行提供匹配的事件。
以上是如何在 Pandas 中根據日期時間範圍有效地連接 DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!