エンジニアライフスタイルブログを運営しているミウラ(@miumiu06171)です。
普段はフリーランスでシステムエンジニアをしております。
今回は、こちらの前回記事に引き続いて、PandasのDataFrameを結合・連結するmerge関数とconcat関数の機能比較を行い、使い分け方をまとめてみました。
なお、本記事内のPythonソースコードは、JupyterLabで動作を確認しているので、同様に動作確認したい方はこちらの記事も参照し、まずはJupyterLabの環境構築をおこなってください。
pandas.mergeとpandas.concatの機能比較
PandasでDataFrameの結合を行うpandas.merge関数とpandas.concat関数の機能を表形式で比較してみました。
比較項目 | merge関数 | concat関数 |
---|---|---|
結合可能なDataFrame数 | 2つ | 3つ以上 |
結合時にキーにできるカラム数 | 2つ以上 | 1つ |
結合方向 | 横 | 縦、横 |
結合方法 | 内部結合 外部結合 左結合 右結合 |
内部結合 外部結合 |
結合可能なDataFrame数
上図は、merge関数とconcat関数の結合可能なDataFrame数を比較しています。
merge関数は2つ、concat関数は3つ以上のDataFrameを結合することができます。
結合時にキーにできるカラム数
上図は、merge関数とconcat関数の結合時にキーにできるカラム数を比較しています。
merge関数は引数left_onやright_onにリストで複数キーを指定して結合でき、concat関数はカラム全体をキーで結合することができます。
concat関数は、細かく複数のカラム名をキーに指定することはできません。
結合方向
上図は、merge関数とconcat関数の結合方向を比較しています。
merge関数は横方向のみ、concat関数は縦・横の両方向に結合することができます。
結合方法
上図は、merge関数とconcat関数の結合方法を比較しています。
merge関数は内部結合/左結合/右結合/外部結合に対応しており、concat関数は内部結合と外部結合のみ対応しています。
pandas.mergeとpandas.concatの使い分け
pandas.merge関数とpandas.concat関数を使い分けるための判断要素を下図にまとめました。
図からもわかるよように2つのDataFrameで横方向に結合するならばmerge関数、それ以外はconcat関数で実装するとよいでしょう。
まとめ
いかがでしたでしょうか。
merge関数とconcat関数の機能比較を行い、使い分け方をみてきました。
同じ用途の関数が複数あると、どの関数で自分が実現したいことができるか調べる必要がでてきて、仕様を細かくみていく必要もあって時間を消費します。
そんな問題を解決するために今回機能比較を行った上で使い分け方をまとめましたので、ぜひ活用頂けたらと思います。
【関連記事】
【TIPS】Pandasのmerge関数でDataFrameを結合する方法まとめ
【TIPS】Pandasのconcat関数でDataFrameを結合する方法まとめ