note.nkmk.me

pandas.DataFrameの複数の列の文字列を結合して新たな列を生成

Date: 2017-12-29 / tags: Python, pandas
このエントリーをはてなブックマークに追加

pandas.DataFrameの複数の列の文字列を結合(連結)して新たな列を生成する方法を説明する。

例として、以下のデータを使用する。

import pandas as pd

df = pd.read_csv('data/src/sample_pandas_normal.csv').head(3)
print(df)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70

サンプルのcsvファイルはコチラ。

スポンサーリンク

文字列の列同士の結合(連結)

文字列メソッドstr.cat()が使える。

引数sepに指定した文字列が間に挿入される。

df['name-state'] = df['name'].str.cat(df['state'], sep=' in ')
print(df)
#       name  age state  point     name-state
# 0    Alice   24    NY     64    Alice in NY
# 1      Bob   42    CA     92      Bob in CA
# 2  Charlie   18    CA     70  Charlie in CA

単純に+演算子を使ってもOK。

df['name-state2'] = df['name'] + ' in ' + df['state']
print(df)
#       name  age state  point     name-state    name-state2
# 0    Alice   24    NY     64    Alice in NY    Alice in NY
# 1      Bob   42    CA     92      Bob in CA      Bob in CA
# 2  Charlie   18    CA     70  Charlie in CA  Charlie in CA

必要なくなった列はdrop()メソッドで削除できる。

df.drop(['name-state2', 'state'], axis=1, inplace=True)
print(df)
#       name  age  point     name-state
# 0    Alice   24     64    Alice in NY
# 1      Bob   42     92      Bob in CA
# 2  Charlie   18     70  Charlie in CA

文字列の列と数値の列の結合(連結)

文字列の列と数値の列を結合する場合は、数値の列をastype()メソッドで文字列型strに型変換する必要がある。

df['name-age'] = df['name'] + '(' + df['age'].astype(str) + ')'
print(df)
#       name  age  point     name-state     name-age
# 0    Alice   24     64    Alice in NY    Alice(24)
# 1      Bob   42     92      Bob in CA      Bob(42)
# 2  Charlie   18     70  Charlie in CA  Charlie(18)
スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事