❯ 2.4 連鎖・結合・マージ
⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺
推定完了時間
❲▹❳ 動画 8m22s
☷ コード資料 10m
concat 連鎖
pandasの関数
2つ以上のpandasオブジェクトを縦または横に結合
インデックス上でのみ整列する
インデックスに重複があるとエラーになる
デフォルトは外側結合で、内側結合のオプションもある
join 結合
DataFrameのメソッド
2つ以上のpandasオブジェクトを横方向に結合
呼び出したDataFrameの列またはインデックスを、他のオブジェクトのインデックスに合わせる
カルテシアン積を実行することで、結合する列やインデックスの重複した値を処理する
デフォルトは左結合で、内側、外側、右のオプションがある
merge マージ
DataFrameのメソッド
2つのDataFrameを横方向に結合
呼び出したDataFrameの列やインデックスを、もう一方のDataFrameの列やインデックスに合わせる
カルテシアン積を実行することで、結合する列/インデックス上の重複する値を処理する
デフォルトは内側結合で、左側、外側、右側のオプションがある
2016年、2017年、2018年のデータを、read_csv関数のループを使ってDataFramesのリストに読み込んでみましょう。
concat関数は、DataFramesを縦に結合できる唯一の関数です。リストstock_tablesを渡して、これを実行してみましょう。
これから、DataFramesを横方向に結合するため、joinメソッドやmergeメソッドを使ってconcatの機能を再現することができます。ここでは、joinメソッドを使って、stock_2016とstock_2017のDataFrameを結合してみましょう。
デフォルトでは、DataFrameはインデックスで整列します。同じ名前の列がある場合は、結果で区別するために、lsufixまたはrsufixパラメータに値を指定する必要があります。
concat関数の出力を正確に再現するには、DataFrameのリストをjoinメソッドに渡します。
次に、concatやjoinとは異なり、2つのDataFramesを結合することができるmergeについて説明します。デフォルトでは、mergeはDataFramesごとに同じ名前の列の値を揃えようとします。しかし、ブールパラメーターのleft_indexとright_indexをTrueに設定することで、インデックスで揃えるようにすることができます。2016年と2017年をマージしてみましょう。
デフォルトでは、mergeはinner joinを使用し、同じ名前の列には自動的に末尾に付け加えます。how=outerに変更して、2018年のデータの外側joinを実行し、concatを再現してみましょう。