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

Pythonで3つ以上のPandas DataFrameを連結する方法|concat()の使い方を徹底解説

Pythonで複数のPandas DataFrameを連結するには?

2つ以上のPandas DataFrameを連結(結合)するには、concat()メソッドを使用します。この記事では、3つのDataFrameを実際に作成し、それらを1つにまとめるまでの手順を、サンプルコードと実行結果つきでわかりやすく解説します。

手順1:ライブラリをインポートする

まず、必要なライブラリであるPandasをインポートします。

import pandas as pd

手順2:1つ目のDataFrameを作成する

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

手順3:2つ目のDataFrameを作成する

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

手順4:3つ目のDataFrameを作成する

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

手順5:concat()ですべてのDataFrameを連結する

連結したいDataFrameをリストにまとめて、pd.concat()に渡すだけでOKです。

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

完全なサンプルコード

ここまでの手順をすべてまとめたコードがこちらです。

import pandas as pd

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

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

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

# 3つのDataFrameを連結する
res = [dataFrame1, dataFrame2, dataFrame3]
print("\n3つのDataFrameを連結した結果...\n", pd.concat(res))

実行結果

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

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

補足:concat()の便利なオプション

pd.concat()には、連結の仕方を細かく制御するための引数がいくつか用意されています。

  • ignore_index=True:元のインデックスを破棄し、0から連番の新しいインデックスを振り直します。
  • axis=1:デフォルトの縦方向(行の追加)ではなく、横方向(列の追加)で連結します。
  • join='inner':共通する列のみを残して連結します(デフォルトは「outer」で、すべての列を保持)。

たとえば、連結後にインデックスを0から振り直したい場合は、次のように書きます。

pd.concat(res, ignore_index=True)

まとめ

複数のDataFrameを連結するときは、対象をリストにまとめてpd.concat()に渡すだけで簡単に実現できます。行方向・列方向の連結やインデックスの扱いも引数で柔軟に制御できるため、データ前処理の現場で非常に役立つテクニックです。ぜひ活用してみてください。

  1. Pythonで配列内の複数の数値の最大公約数(GCD)を求める方法

    はじめに本記事では、Pythonを使って配列(リスト)内の2つ以上の数値から最大公約数(GCD:Greatest Common Divisor)を求める方法を解説します。問題の概要数値の配列が与えられ、そのすべての要素に共通する最大公約数を求めることが目的です。3つ以上の数値のGCDは、「引数として渡されたすべての数値に共通する素因数の積」として定義できます。また、隣り合う2つの数値のGCDを繰り返し計算していくことでも求められます。ここでは、後者のアプローチである「ペアごとのGCDを順番に計算する」方法を実装します。アルゴリズムの流れまず、リストの最初の2つの要素のGCDを計算します。次に、

  2. Pythonで複数の数値や配列の最大公約数(GCD)を求める方法

    本記事では、以下の問題に対する解決策について詳しく解説します。問題の概要与えられた数値の配列から、それらすべての最大公約数(GCD)を求める必要があります。アプローチ2つより多い数値の最大公約数を求める場合、GCDは引数として渡されたすべての数値に共通する素因数の積と等しくなります。これは数学的な定義に基づく方法ですが、実装がやや複雑になります。もう一つの方法として、2つの数値ずつペアでGCDを繰り返し計算するという手法があります。具体的には、最初の2つの数値のGCDを求め、その結果と次の数値のGCDを計算し、これを配列の最後まで繰り返します。本記事では、後者のアプローチを実装していきます。実