首頁 > 後端開發 > Python教學 > 如何在沒有複雜迭代器的情況下基於公共列有效地合併多個 DataFrame?

如何在沒有複雜迭代器的情況下基於公共列有效地合併多個 DataFrame?

Linda Hamilton
發布: 2024-11-21 09:05:11
原創
928 人瀏覽過

How can you efficiently merge multiple DataFrames based on a common column without complex iterators?

合併多個DataFrame

問題陳述

合併多個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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板