問題ステートメント
複数のデータフレームのマージは、特にデータフレームが異なる場合には困難な作業になる可能性があります。形状と構造。最も一般的なアプローチには、merge() 関数を繰り返し使用することが含まれますが、これは複雑になり、多数のデータフレームに対して読み取れなくなる可能性があります。
質問
複数のデータフレームをマージするにはどうすればよいですか?再帰や複雑な手段を使用せずに、共通の列に基づいたデータフレームを効率的かつエレガントに作成iterators?
Answer
reduce() 関数は、複数のデータフレームをマージするための再帰の代替手段を提供します。 reduce() 関数は、項目のリストに関数を繰り返し適用して、項目のリストを 1 つの値に減らします。この場合、関数は 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 を最初の引数として、データフレームのリストを 2 番目の引数として呼び出します。 pd.merge() 関数は 2 つのデータフレームをマージし、reduce() 関数は結果をリスト内の次のデータフレームと繰り返しマージし、リストを 1 つのマージされたデータフレームに縮小します。
on='date'引数は、すべてのデータフレームに共通であると想定される「日付」列に基づいてマージを実行することを指定します。 how='outer' パラメーターは、「date」列に対応する値があるかどうかに関係なく、両方のデータフレームのすべての行をマージされたデータフレームに含める必要があることを示します。これにより、同じ日付値を持つすべての行が 1 つの行にマージされます。
Result
df_merged 変数には、個々のデータフレーム。各データフレームの対応する行が「日付」列に基づいて配置されます。この方法は効率的で柔軟で読みやすいため、多数のデータフレームを結合するための理想的なソリューションとなります。
以上が複雑なイテレータを使用せずに、共通の列に基づいて複数の DataFrame を効率的にマージするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。