問題陳述
合併多個DataFrame 可能是一項艱鉅的任務,尤其是當DataFrame 具有不同的值時形狀和結構。最常見的方法是迭代地使用 merge() 函數,這對於大量資料幀來說可能會變得複雜且不可讀。
問題
一個人如何合併多個高效且優雅地基於公共列的資料幀,無需訴諸遞歸或複雜的方法迭代器?
答案
reduce() 函數為合併多個資料幀提供了遞歸的替代方法。 reduce() 函數迭代地將函數應用於項目列表,將其減少為單一值。在本例中,函數是 merge() 函數,項目列表是資料幀列表。
import pandas as pd from functools import reduce # Load dataframes df1 = pd.read_csv('dataframe1.csv') df2 = pd.read_csv('dataframe2.csv') df3 = pd.read_csv('dataframe3.csv') # Create a list of dataframes dataframes = [df1, df2, df3] # Merge dataframes df_merged = reduce(lambda left, right: pd.merge(left, right, on='date', how='outer'), dataframes)
說明
reduce()呼叫函數時,函數 pd.merge 作為第一個參數,資料幀列表作為第二個參數。 pd.merge() 函數合併兩個資料幀,reduce() 函數迭代地將結果與列表中的下一個資料幀合併,將列表縮減為單一合併的資料幀。
on='date'參數指定應基於「日期」列執行合併,假定該列對所有資料幀都是通用的。 how='outer' 參數指示兩個資料幀中的所有行都應包含在合併的資料幀中,無論它們是否具有「日期」列的相應值。這可確保具有相同日期值的所有行合併為一行。
結果
df_merged 變數現在包含一個合併的資料幀,其中包含來自各個資料幀,每個資料幀中的相應行根據「日期」列對齊。該方法高效、靈活且易於閱讀,使其成為合併大量資料幀的理想解決方案。
以上是如何在沒有複雜迭代器的情況下基於公共列有效地合併多個 DataFrame?的詳細內容。更多資訊請關注PHP中文網其他相關文章!