姓名のデータや電話番号など、特定のパターンでカラムを分割したいことがあります。
str.partition
str.partition
はデフォルトだとスペースで3つのカラム(一番左、スペース、残り)のデータフレームに分けます。
また、引数で文字列を渡せば、その文字を二番目に3つのカラムのデータフレームに分けます。
import pandas as pd s = pd.Series( [ 'xxx xxxx', 'yyy yyyy' ] ) s.str.partition() #右から分ける場合 #s.str.rpartition()
str.split
str.split
も同様の挙動ですが、デフォルトだとスペース部分で分けたリストを一つのカラムに入れます。
これだと多すぎて困る場合はn
変数でいくつまでを分けるかを指定できます。
カラムを分けたい場合はexpand=True
を指定します。
partition
との違いは分割文字pat
を残さないことです。
s.str.split() #右から、-で最高4つに分ける場合 #s.str.rsplit(pat='-',n=4,expand=True)
逆の動き(結合)
結合したい場合、列通しの足し算やstr.cat
などもありますが、現実の場では、複数の同時結合をしたい、とかになると思うので、apply
にlambda
とjoin
を突っ込んだ方が楽です。
df['col1'] + df['col2'] df['col1'].str.cat(df['col2'],sep='-') df[['col1','col2']].apply(lambda x : ''.join(x),axis=1)