Pandas の concat 関数

Suraj Joshi 2023年1月30日
  1. pandas.concat() メソッドは、Pandas DataFrame または Series オブジェクトを連結する
  2. 例: pandas.concat() メソッドを使って 2つの Pandas Series を行軸に沿って連結する
  3. 例:pandas.concat() メソッドを使って 2つの Pandas 系列オブジェクトを列軸に沿って連結する
  4. 例:pandas.concat() メソッドを使って 2つの Pandas DataFrame オブジェクトを連結する
  5. 例:pandas.concat() メソッドを用いた直列オブジェクトと DataFrame の連結
Pandas の concat 関数

pandas.concat() メソッドは、Pandas DataFrame または Series オブジェクトを連結します。

pandas.concat() メソッドは、Pandas DataFrame または Series オブジェクトを連結する

pandas.concat(
    objs,
    axis=0,
    join="outer",
    ignore_index=False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity=False,
    sort=False,
    copy=True,
)

パラメータ

objs 連結する Pandas Series または DataFrame オブジェクトのシーケンスまたはマッピング。
join 結合の方法(inner または outer)
axis row (axis=0) または column (axis=1) に沿ってコンケートします。
ignore_index 論理値。True の場合、元の DataFrames のインデックスは無視されます。
keys シーケンスを使用して、結果のインデックスに識別子を追加します。
levels レベルを使用して MultiIndex を作成します。
names マルチインデックスのレベル名
verify_integrity 論理値。True ならば、重複がないかどうかをチェックします。
sort 論理値。joinouter のときに非連結軸が整列していなければ、非連結軸をソートします。
copy 論理値。False ならば、データの不要なコピーを避ける。

戻り値

これは、すべての Series オブジェクトが axis=0 に沿って連結されている場合に Series オブジェクトを返します。連結するオブジェクトが DataFrame であるか、Series オブジェクトが axis=1 に沿って連結されている場合は DataFrame オブジェクトを返します。

例: pandas.concat() メソッドを使って 2つの Pandas Series を行軸に沿って連結する

import pandas as pd

ser_1 = pd.Series([20, 45, 36, 45])
print("Series-1:")
print(ser_1, "\n")

ser_2 = pd.Series([48, 46, 34, 38])
print("Series-2:")
print(ser_2, "\n")

concatenated_ser = pd.concat([ser_1, ser_2])

print("Result after Concatenation of ser_1 and ser_2:")
print(concatenated_ser)

出力:

Series-1:
0    20
1    45
2    36
3    45
dtype: int64

Series-2:
0    48
1    46
2    34
3    38
dtype: int64

Result after Concatenation of ser_1 and ser_2:
0    20
1    45
2    36
3    45
0    48
1    46
2    34
3    38
dtype: int64

これは、Series オブジェクト ser_1ser_2axis=0 あるいは行方向に連結します。一方の Series オブジェクトの行はもう一方の行の上に積み重ねられます。連結されたオブジェクトはデフォルトでは親オブジェクトの index の値を取ります。ignore_index=True を指定することで、連結されたオブジェクトに新しいインデックス値を割り当てることができます。

import pandas as pd

ser_1 = pd.Series([20, 45, 36, 45])
print("Series-1:")
print(ser_1, "\n")

ser_2 = pd.Series([48, 46, 34, 38])
print("Series-2:")
print(ser_2, "\n")

concatenated_ser = pd.concat([ser_1, ser_2], ignore_index=True)

print("Result after Concatenation of ser_1 and ser_2:")
print(concatenated_ser)

出力:

Series-1:
0    20
1    45
2    36
3    45
dtype: int64

Series-2:
0    48
1    46
2    34
3    38
dtype: int64

Result after Concatenation of ser_1 and ser_2:
0    20
1    45
2    36
3    45
4    48
5    46
6    34
7    38
dtype: int64

これは Series オブジェクトを連結し、連結された Series オブジェクトに新しいインデックス値を代入します。

例:pandas.concat() メソッドを使って 2つの Pandas 系列オブジェクトを列軸に沿って連結する

pandas.concat() メソッドで axis=1 を指定することで、Series オブジェクトを水平方向または列軸に沿って連結することができます。

import pandas as pd

ser_1 = pd.Series([20, 45, 36, 45])
print("Series-1:")
print(ser_1, "\n")

ser_2 = pd.Series([48, 46, 34, 38])
print("Series-2:")
print(ser_2, "\n")

concatenated_ser = pd.concat([ser_1, ser_2], axis=1)

print("Result after Horizontal Concatenation of ser_1 and ser_2:")
print(concatenated_ser)

出力:

Series-1:
0    20
1    45
2    36
3    45
dtype: int64

Series-2:
0    48
1    46
2    34
3    38
dtype: int64

Result after Horizontal Concatenation of ser_1 and ser_2:
    0   1
0  20  48
1  45  46
2  36  34
3  45  38

これは Series オブジェクトの ser_1ser_2 を水平方向に積み重ねます。

例:pandas.concat() メソッドを使って 2つの Pandas DataFrame オブジェクトを連結する

import pandas as pd

df_1 = pd.DataFrame({"Col-1": [1, 2, 3, 4], "Col-2": [5, 6, 7, 8]})
print("DataFrame-1:")
print(df_1, "\n")

df_2 = pd.DataFrame({"Col-1": [10, 20, 30, 40], "Col-2": [50, 60, 70, 80]})
print("DataFrame-2:")
print(df_2, "\n")

concatenated_df = pd.concat([df_1, df_2], ignore_index=True)

print("Result after Horizontal Concatenation of df_1 and df_2:")
print(concatenated_df)

出力:

DataFrame-1:
   Col-1  Col-2
0      1      5
1      2      6
2      3      7
3      4      8

DataFrame-2:
   Col-1  Col-2
0     10     50
1     20     60
2     30     70
3     40     80

Result after Horizontal Concatenation of df_1 and df_2:
   Col-1  Col-2
0      1      5
1      2      6
2      3      7
3      4      8
4     10     50
5     20     60
6     30     70
7     40     80

これは DataFrame オブジェクト df_1df_2 を連結します。ignore_index=True を指定することで、結合された DataFrame に新しいインデックスを割り当てます。

例:pandas.concat() メソッドを用いた直列オブジェクトと DataFrame の連結

import pandas as pd

df = pd.DataFrame({"Col-1": [1, 2, 3, 4], "Col-2": [5, 6, 7, 8]})
print("DataFrame Object:")
print(df, "\n")

ser = pd.Series([48, 46, 34, 38])
print("Series Object:")
print(ser, "\n")

ser_df = pd.concat([df, ser], axis=1)

print("Concatenation of ser and df:")
print(ser_df)

出力:

DataFrame Object:
   Col-1  Col-2
0      1      5
1      2      6
2      3      7
3      4      8

Series Object:
0    48
1    46
2    34
3    38
dtype: int64

Concatenation of ser and df:
   Col-1  Col-2   0
0      1      5  48
1      2      6  46
2      3      7  34
3      4      8  38

これは DataFrame オブジェクト dfSeries オブジェクト ser を連結します。pandas.concat() メソッドで axis=1 を設定しているので、連結はカラム単位で行われます。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame