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 つの列を含む次のデータセットがあるとします。
day | month | year |
1 | Jun | 2019 |
2 | Jul | 2020 |
3 | Aug | 2021 |
4 | Sep | 2022 |
5 | Oct | 2023 |
目標は、以下のように列の値を連結することです。
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 が得られます。

次に、連結を実行するための次の構文を追加します(区切り文字として「-」を使用)。
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)
コードを実行すると、連結された完全な日付が取得されます (黄色で強調表示されています)。

例2: 2つの別々のデータフレームの列値を連結する
前の例では、このデータに基づいて最初の DataFrame を作成する方法を確認しました。
day | month | year |
1 | Jun | 2019 |
2 | Jul | 2020 |
3 | Aug | 2021 |
4 | Sep | 2022 |
5 | Oct | 2023 |
次に、このデータに基づいて 2 番目の DataFrame を作成します。
unemployment_rate | interest_rate |
5.5 | 1.75 |
5 | 1.5 |
5.2 | 1.25 |
5.1 | 1.5 |
4.9 | 2 |
目標は、次のように 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)
結果:

例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 で、これが実際に最大値です。
