【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を指定するだけで対応可能です。
-
【Python・Pandas】MultiIndexを並べ替える方法(sortlevelメソッド)
PandasでMultiIndex(マルチインデックス)を作成するには from_arrays() メソッドを使用します。さらに、作成したMultiIndexを並べ替えるには sortlevel() メソッドを使用します。 まず、必要なライブラリをインポートします。 import pandas as pd MultiIndexとは、pandasオブジェクトに対して使用できる多階層(階層型)のインデックスオブジェクトです。まずは元となる配列を作成します。 arrays = [[2, 4, 3, 1], ['John', 'Tim', 'Jacob'
-
【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ファイルを読み込みます。ここではデスクトップ上に保存