PythonのPandasで文字列を結合する方法について

Python,イメージ

AI実装検定のご案内

Pandasで「文字列を結合する」方法は、用途やデータ構造(Series同士、列同士、DataFrame全体、固定の文字列との結合など)によっていくつかやり方があります。

それぞれの代表的な方法を詳しく解説します。

目次

+ 演算子を使った結合

もっともシンプルな方法は、Pythonの文字列結合と同じように + を使う方法です。

import pandas as pd

df = pd.DataFrame({
    "first": ["田中", "佐藤", "鈴木"],
    "last": ["太郎", "花子", "一郎"]
})

# 文字列を単純に結合
df["full_name"] = df["first"] + df["last"]
print(df)

注意点

  • 欠損値(NaN)があると結合結果も NaN になるので、欠損値がある場合は .fillna('') などで埋める必要があります。

区切り文字を入れて結合(str.cat()

名前と名字の間にスペースや記号を入れたい場合は、str.cat() が便利です。

# 空白を挟んで結合
df["full_name"] = df["first"].str.cat(df["last"], sep=" ")
print(df)

ポイント

  • sep で区切り文字を指定可能
  • 複数列を結合する場合は str.cat(df[["first", "last"]], sep=" ") のように指定

複数列をまとめて結合

str.cat() にリストやDataFrameを渡すと、一度に複数列を結合できます。

# first, last の両方をまとめて結合
df["joined"] = df[["first", "last"]].astype(str).agg(" ".join, axis=1)
print(df)

こちらの方法は agg(" ".join, axis=1) を使うことで、行方向に文字列を結合できます。

固定の文字列を追加して結合

列にラベルや単語を付けたい場合も簡単です。

df["greeting"] = "こんにちは " + df["first"] + "さん"
print(df)

欠損値(NaN)がある場合の結合

データに欠損が含まれる場合、+ だと NaN が伝播してしまいます。

そのときは .fillna("") を使うのが定番です。

df2 = pd.DataFrame({
    "first": ["田中", None, "鈴木"],
    "last": ["太郎", "花子", None]
})

# NaN を空文字に置き換えて結合
df2["full_name"] = df2["first"].fillna("") + df2["last"].fillna("")
print(df2)

まとめ

  • + 演算子 → シンプルだが NaN に弱い
  • str.cat() → 区切り文字付き結合、複数列対応
  • agg(" ".join, axis=1) → 行方向で柔軟に結合
  • fillna("") を組み合わせて NaN 対策

以上、PythonのPandasで文字列を結合する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次