Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】2つ以上のPandas DataFrameを行方向に連結する方法を解説

Pandasで2つ以上のDataFrame(データフレーム)を連結するには、concat()メソッドを使用します。行方向(縦方向)に連結したい場合は、axisパラメータをaxis=0に設定します。まずは、必要なライブラリをインポートしましょう。

import pandas as pd

連結用のDataFrameを3つ作成する

まず、1つ目のDataFrameを作成します。

dataFrame1 = pd.DataFrame(
    {
        "Col1": [10, 20, 30],
        "Col2": [40, 50, 60],
        "Col3": [70, 80, 90],
    },
    index=[0, 1, 2],
)

続いて、2つ目のDataFrameを作成します。

dataFrame2 = pd.DataFrame(
    {
        "Col1": [100, 110, 120],
        "Col2": [130, 140, 150],
        "Col3": [160, 170, 180],
    },
    index=[3, 4, 5],
)

さらに、3つ目のDataFrameを作成します。

dataFrame3 = pd.DataFrame(
    {
        "Col1": [200, 210, 220],
        "Col2": [230, 240, 250],
        "Col3": [260, 270, 280],
    },
    index=[6, 7, 8],
)

concat()で3つのDataFrameを連結する

作成した3つのDataFrameをリストにまとめ、concat()に渡して連結します。行方向に連結する場合は「axis=0」を指定してください。なお、axis=0はデフォルト値なので、省略しても同じ結果になります。

res = [dataFrame1, dataFrame2, dataFrame3]
pd.concat(res, axis=0)

完全なサンプルコード

以下が実行可能なコード全体です。

import pandas as pd

# DataFrame1を作成
dataFrame1 = pd.DataFrame(
    {
        "Col1": [10, 20, 30],
        "Col2": [40, 50, 60],
        "Col3": [70, 80, 90],
    },
    index=[0, 1, 2],
)

# DataFrame1を表示
print("DataFrame1...\n", dataFrame1)

# DataFrame2を作成
dataFrame2 = pd.DataFrame(
    {
        "Col1": [100, 110, 120],
        "Col2": [130, 140, 150],
        "Col3": [160, 170, 180],
    },
    index=[3, 4, 5],
)

# DataFrame2を表示
print("DataFrame2...\n", dataFrame2)

# DataFrame3を作成
dataFrame3 = pd.DataFrame(
    {
        "Col1": [200, 210, 220],
        "Col2": [230, 240, 250],
        "Col3": [260, 270, 280],
    },
    index=[6, 7, 8],
)

# DataFrame3を表示
print("DataFrame3...\n", dataFrame3)

# 3つのDataFrameを連結(行方向)
# 行方向に連結する場合は「axis=0」を指定
res = [dataFrame1, dataFrame2, dataFrame3]
print("\n3つのDataFrameを連結した結果(行方向)...\n", pd.concat(res, axis=0))

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame1...
    Col1  Col2  Col3
0   10    40    70
1   20    50    80
2   30    60    90
DataFrame2...
    Col1  Col2  Col3
3   100   130   160
4   110   140   170
5   120   150   180
DataFrame3...
    Col1  Col2  Col3
6   200   230   260
7   210   240   270
8   220   250   280

3つのDataFrameを連結した結果(行方向)...
    Col1  Col2  Col3
0   10    40    70
1   20    50    80
2   30    60    90
3   100   130   160
4   110   140   170
5   120   150   180
6   200   230   260
7   210   240   270
8   220   250   280

ポイント解説

各行のインデックス(0〜8)がそのまま維持されて、縦方向にデータが積み上げられていることが確認できます。

また、元のインデックスを保持せずに0から連番を振り直したい場合は、ignore_index=Trueを指定すると便利です。

pd.concat(res, axis=0, ignore_index=True)

このように、concat()メソッドを使えば、2つどころか任意の数のDataFrameを簡単に連結できます。列方向(横方向)に連結したい場合は、axis=1を指定するだけで対応可能です。

  1. 【Python・Pandas】MultiIndexを並べ替える方法(sortlevelメソッド)

    PandasでMultiIndex(マルチインデックス)を作成するには from_arrays() メソッドを使用します。さらに、作成したMultiIndexを並べ替えるには sortlevel() メソッドを使用します。 まず、必要なライブラリをインポートします。 import pandas as pd MultiIndexとは、pandasオブジェクトに対して使用できる多階層(階層型)のインデックスオブジェクトです。まずは元となる配列を作成します。 arrays = [[2, 4, 3, 1], ['John', 'Tim', 'Jacob'

  2. 【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方

    PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存