PythonのPandasのconcat axisについて

Python,イメージ

AI実装検定のご案内

pandas.concataxis パラメータは、「どの方向に連結するか」 を決める非常に重要な引数です。

axis=0axis=1 の違いを中心に、詳しく整理して説明します。

目次

基本構文

import pandas as pd

pd.concat([df1, df2], axis=0)  # 行方向に連結
pd.concat([df1, df2], axis=1)  # 列方向に連結

※このコード単体では、出力はできません。

  • objs: 連結する DataFrame または Series のリストや辞書
  • axis: 0(行方向)か 1(列方向)
  • デフォルトは axis=0(行方向)

axis=0(行方向に連結)

  • デフォルトの動作。
  • df1 の下に df2 を積み重ねるイメージ。
  • インデックスがそのまま残るので、重複する可能性がある
  • 列名が一致していない場合、その列には NaN が入る。

import pandas as pd

df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})

print(pd.concat([df1, df2], axis=0))

インデックスがそのままなので、必要に応じて ignore_index=True を指定する。

pd.concat([df1, df2], axis=0, ignore_index=True)

axis=1(列方向に連結)

  • df1df2 を横に並べるイメージ。
  • 行インデックスに基づいて結合するため、インデックスが揃っていないと NaN が生じる

df1 = pd.DataFrame({"A": [1, 2]}, index=["x", "y"])
df2 = pd.DataFrame({"B": [3, 4]}, index=["y", "z"])

print(pd.concat([df1, df2], axis=1))

行インデックスを基準に結合するため、SQL の「外部結合」に近い挙動になる。

axis の使い分けまとめ

  • axis=0: データを縦に積み重ねる(レコード追加したいとき)
  • axis=1: データを横に結合する(新しい特徴量・列を追加したいとき)

関連オプション

  • ignore_index=True: 行方向結合時にインデックスを振り直す
  • keys=["df1", "df2"]: どのデータから来たか分かるように階層化インデックスをつける
  • join="inner": 共通部分だけ残す(デフォルトは "outer" で和集合)

concatmerge / join の違い

  • concat: 単純に縦横にくっつける
  • merge: SQL の JOIN に近い(キーを指定して結合)
  • join: インデックスをキーに結合(merge のインデックス版)

まとめ

  • axis=0 → 縦方向に積む(データ追加)
  • axis=1 → 横方向に並べる(特徴量追加)
    という使い分けになります。

以上、PythonのPandasのconcat axisについてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次