共通の日付列に基づいて複数のデータフレームを効率的に結合するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-12 12:36:02
オリジナル
959 人が閲覧しました

How do I efficiently merge multiple dataframes based on a common date column?

日付に基づいて複数のデータフレームを結合する

共通の日付列を持つ、行と列の数が異なる複数のデータフレームがあります。目標は、これらのデータフレームをマージして、各日付がすべてのデータフレームに共通する行を取得することです。

非効率的な再帰アプローチ

データフレームをマージするために再帰関数を使用しようとしました欠陥があります。関数は同じ入力で自分自身を継続的に呼び出すため、無限ループに入ります。このアプローチは非効率的で、エラーが発生しやすくなります。

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 関数を使用すると、次のようなメリットがあります。利点:

  • シンプルさ: コードは簡潔で理解しやすいです。
  • ネストなし: 再帰アプローチとは異なり、マージ操作のネストがないため、無限のリスクが排除されます。ループ。
  • 拡張性: dfs リストにデータフレームを追加または削除して、マージ操作を動的に変更できます。

提供されたデータフレーム df1、df2、および df3 を使用すると、次のマージされたデータフレームが得られます:

       DATE  VALUE1  VALUE2  VALUE3
0  May 15, 2017  1901.00  2902.00  3903.00
ログイン後にコピー

このデータフレームには、3 つの入力データフレームすべてに共通する日付を持つ行のみが含まれています。

以上が共通の日付列に基づいて複数のデータフレームを効率的に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート