横方向にデータを結合する関数の代表例としてmerge関数があります。merge関数は細かい設定ができる一方で、3つ以上のDataFrame(もしくはSeries)をまとめて結合することができません。一方で、join関数は3つ以上のデータを結合することが可能になっています。なっている状態がデフォルトです。結合していくものはインデックスラベルがキーになっている必要があります。この違いからも、インデックスラベル同士を基準にDataFrameを結合する場合はjoin関数の方が手軽になります。merge関数の詳しい解説は以下の記事を参考にしてください。/features/pandas-merge.html本記事ではjoin関数の使い方について詳しく見ていきます。join関数join関数は冒頭でも触れたように、3つ以上の複数のDataFrame(もしくはSeries)を効率的に結合できる関数となっています。結合する側(右側から結合するデータ)に関してはインデックスラベルが必ずキーとなるのでその点に注意が必要です。これからは結合される側のデータを左側データ、結合する側(関数の引数に設定される側のデータ)を右側データと呼称することにします。APIドキュメントまずはAPIドキュメントから見てみましょう。この引数に渡されるDataFrameとSeriesのインデックスラベルはキーとなるため、元のDataFrameのインデックスラベルもしくは特定の列データと対応している必要があります。Seriesを渡す場合はname属性(attribute)を設定する必要があります。(省略可能)初期値None結合される側(左側データ)でキーとなる列データもしくはインデックスラベルを指定します。指定のない限りインデックス同士をキーとして結合します。複数の列(もしくはMultiIndexの階層)が指定された場合、結合する側(右側データ)のインデックスラベルはMultiIndexである必要があります。(省略可能)初期値’left’結合する際にどのように結合するかを指定します。左側データの被りのあった列ラベル(インデックスラベルのname)の後につける文字列を指定します。右側データの炙りのあった列ラベル(インデックスラベルのname)の後につける文字列を指定します。(省略可能)初期値False結合したあとに、データをソートするか指定します。returns:結合されたDataFrameが返されます。このように、結合する際に使用するキーは右側データではインデックスラベルに固定されています。左側データではデフォルトでインデックスラベルに固定されており、on引数で列データを指定することでキーの値を変更することができます。how引数で指定できる'left','right','inner','outer'の違いはどちらの集合を優先してとるかという話で、'inner'の場合は両方ともに含まれるもののみを、'outer'の場合はどちらか一方にでも含まれていれば使われます。以下の記事の冒頭でhow引数ごとの違いの詳しい解説をしています。/features/pandas-merge.html基本的な結合まずは基本的な使い方となっている、インデックスラベルをキーにした結合を行って見ます。left.join(right)このように、インデックスラベルがキーとなって結合されます。次は3つ以上のデータを結合してみます。リストもしくはタプルで指定すれば問題なくできます。3.0図にすると以下のようになります。Seriesを結合する次にSeriesを結合していきます。name属性の設定を忘れないようにしましょう。left.join(right)図にすると以下のようになります。結合後のキーの使用範囲を指定する次に、結合後に使用するキーの範囲を指定します。how引数で指定することができ、デフォルトではhow='left'となっているため、元のDataFrameのキーのみ使われている設定になっています。変えて確かめてみましょう。デフォルトのhow='left'から指定してみます。NaN次は両方ともに含まれているキーを使用するhow='inner'です。2次はどちらか一方にでも含まれていれば使用されるhow='outer'です。4.0右側データのキーだけを使うhow='right'です。4左側データで使うキーを指定するon引数を使うことで左側データにおいて使用するキーを指定することができます。左側データのみとなるのでこれには注意が必要です。NaN複数キーを指定する複数のキーを元に結合させてみます。この時、右側データはMultiIndexをインデックスラベルに持っている必要があります。4.0これを図にすると以下のようになります。被りのあるカラムラベルに文字列を付け足す被りがあった時にそれらを識別するため、カラムラベルの後ろに文字列を付け加えることができます。lsuffixで左側データ、rsuffixで右側データに付け加えられます。0まとめ今回はjoin関数の使い方について解説しました。merge関数は列データをキーに扱うのに対し、join関数はインデックスラベルをキーに扱うものを得意としています。merge関数の引数を変えるだけでjoin関数で行っている操作を実現すること自体は可能ですが、設定する項目が多いため少々面倒です。インデックスラベルを使って結合することが明確な場合はjoin関数を使って結合をし、それ以外の場合はmerge関数に頼るといったようにするとコードの量も煩雑にならずに済むでしょう。documentationTweetDeepAgeではAIに関する厳選した内容を記事にしてお届けします。