日付に基づいて複数のデータフレームを結合する
共通の日付列を持つ、行と列の数が異なる複数のデータフレームがあります。目標は、これらのデータフレームをマージして、各日付がすべてのデータフレームに共通する行を取得することです。
非効率的な再帰アプローチ
データフレームをマージするために再帰関数を使用しようとしました欠陥があります。関数は同じ入力で自分自身を継続的に呼び出すため、無限ループに入ります。このアプローチは非効率的で、エラーが発生しやすくなります。
reduce を使用した最適化されたソリューション
複数のデータフレームをマージするより効率的な方法は、functools モジュールの関数 reduce を使用することです。この関数は、指定されたマージ操作を隣接するデータフレームのペアに繰り返し適用することにより、データフレームのリストを単一のデータフレームに縮小します。
次のコード スニペットは、このアプローチを示しています。
import pandas as pd from functools import reduce dfs = [df1, df2, df3] # list of dataframes df_merged = reduce(lambda left, right: pd.merge(left, right, on='date', how='outer'), dfs)
このコードでは、reduce 関数は、隣接するデータフレームのペアを繰り返しマージすることで、dfs リストを単一のデータフレームに縮小します。 on='date' パラメーターは、日付列に基づいてマージを実行することを指定します。 how='outer' パラメーターを使用すると、同じ日付を共有していない場合でも、両方のデータフレームのすべての行がマージされた結果に確実に含まれます。
reduce 関数の利点
reduce 関数を使用すると、次のようなメリットがあります。利点:
例
提供されたデータフレーム df1、df2、および df3 を使用すると、次のマージされたデータフレームが得られます:
DATE VALUE1 VALUE2 VALUE3 0 May 15, 2017 1901.00 2902.00 3903.00
このデータフレームには、3 つの入力データフレームすべてに共通する日付を持つ行のみが含まれています。
以上が共通の日付列に基づいて複数のデータフレームを効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。