Pandas DataFrame で列の値を連結する方法は 2 つあります。

(1)文字列のみ:

df["new_column_name"] = df["1st_column_name"] + df["2nd_column_name"] + ...

(2)文字列と整数(または整数のみ)が混在する場合

df["new_column_name"] = df["1st_column_name"].map(str) + df["2nd_column_name"].map(str) + ...

例1: 単一のデータフレーム内の値を連結する

3 つの列を含む次のデータセットがあるとします。

daymonthyear
1Jun2019
2Jul2020
3Aug2021
4Sep2022
5Oct2023

目標は、以下のように列の値を連結することです。

day-month-year

まず、Python で上記の値を取得するための DataFrame を作成します。

import pandas as pd

data = {
    "day": [1, 2, 3, 4, 5],
    "month": ["Jun", "Jul", "Aug", "Sep", "Oct"],
    "year": [2019, 2020, 2021, 2022, 2023],
}

df = pd.DataFrame(data)

print(df)

コードを実行すると、次の DataFrame が得られます。

Pandas DataFrame の列の値を連結する 1

次に、連結を実行するための次の構文を追加します(区切り文字として「-」を使用)。

df["full_date"] = df["day"].map(str) + "-" + df["month"].map(str) + "-" + df["year"].map(str)

したがって、完全な Python コードは次のようになります。

import pandas as pd

data = {
    "day": [1, 2, 3, 4, 5],
    "month": ["Jun", "Jul", "Aug", "Sep", "Oct"],
    "year": [2019, 2020, 2021, 2022, 2023],
}

df = pd.DataFrame(data)

df["full_date"] = df["day"].map(str) + "-" + df["month"].map(str) + "-" + df["year"].map(str)

print(df)

コードを実行すると、連結された完全な日付が取得されます (黄色で強調表示されています)。

Pandas DataFrame の列の値を連結する 2

例2: 2つの別々のデータフレームの列値を連結する

前の例では、このデータに基づいて最初の DataFrame を作成する方法を確認しました。

daymonthyear
1Jun2019
2Jul2020
3Aug2021
4Sep2022
5Oct2023

次に、このデータに基づいて 2 番目の DataFrame を作成します。

unemployment_rateinterest_rate
5.51.75
51.5
5.21.25
5.11.5
4.92

目標は、次のように 2 つの DataFrame の値を連結することです。

day-month-year: unemployment_rate;  interest_rate

この目標を達成するには、次のコードを適用できます。

import pandas as pd

data1 = {
    "day": [1, 2, 3, 4, 5],
    "month": ["Jun", "Jul", "Aug", "Sep", "Oct"],
    "year": [2019, 2020, 2021, 2022, 2023],
}

df1 = pd.DataFrame(data1)

data2 = {
    "unemployment_rate": [5.5, 5, 5.2, 5.1, 4.9],
    "interest_rate": [1.75, 1.5, 1.25, 1.5, 2],
}

df2 = pd.DataFrame(data2)

combined_values = (
    df1["day"].map(str)
    + "-"
    + df1["month"].map(str)
    + "-"
    + df1["year"].map(str)
    + ": "
    + "Unemployment: "
    + df2["unemployment_rate"].map(str)
    + "; "
    + "Interest: "
    + df2["interest_rate"].map(str)
)

print(combined_values)

結果:

Pandas DataFrame の列の値を連結する 3

例3: 値を連結し、最大値を求める

最後の例では、2 つの DataFrame (数値のみを含む) を連結し、最大値を見つける方法を説明します。

import pandas as pd

data1 = {"set1": [55, 22, 11, 77, 33]}
df1 = pd.DataFrame(data1)

data2 = {"set2": [23, 45, 21, 73, 48]}
df2 = pd.DataFrame(data2)

concatenated = df1["set1"].map(str) + df2["set2"].map(str)

combined = pd.DataFrame(concatenated)
max_value = combined.max()

print(max_value)

得られる結果は 7773 で、これが実際に最大値です。

Pandas DataFrame の列の値を連結する 4