小ネタです。複数のデータをmergeする必要があり、見通しが悪くなるときに時々使っています。
使用するデータが頻繁に変わる時に、使うデータだけ管理すれば良いので再実行が楽です。
※concatは複数渡せるのですが、mergeは渡せないため
再帰するマージを定義
def recursive_merge(dfs): #最後のdfはdfを返すだけ if len(dfs) == 1: return dfs[0] #再起処理/popで一つだけ取り出し、残りを次の処理へ else: tmp = dfs.pop() return pd.merge( recursive_merge(dfs), tmp )
実際に使う場合
#適当なサンプルデータ df1 = pd.DataFrame({ "ctg":['a','b'], "val1":[1,1] }) df2 = pd.DataFrame({ "ctg":['a','b'], "val2":[2,2] }) df3 = pd.DataFrame({ "ctg":['a','b'], "val3":[3,3] }) # 使うデータが増えたらここに足す dfs = [df1,df2,df3] #結合処理は特に変えず、再実行するだけ recursive_merge(dfs)