pandas: テキスト処理

Last Change: 23-Sep-2015.
author : qh73xe

padnas では文字列データを操作するための基本メゾットが組み込みで作成されています. このページではこの文字列に関しての情報をまとめます.

まず文字列を操作する関数に関しては Series クラスについています. これは DataFrame 型が複数のデータ型を持つテーブルであるのに対して, Series 型な いでは基本的に一つのデータ型が想定されるためかと思われます.

サンプルデータ

以下にこのページで使用するサンプルデータを示します.

s = Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])

簡単な例

さて,文字列操作用のメゾットは str クラスに実装されています. そのため,文字列操作用の メゾットにアクセスするには以下のようにします.

s.str.lower()  # Series ないのすべての文字列を小文字にする
s.str.upper()  # すべてを大文字にする
s.str.len()    # 文字列数を取得

Splitting と Replacing

分割と置換を行うためには以下のようにします.

s2 = Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h'])
s2.str.split('_')

冷静に考えて pandas を使用して split を行っているので結果は DataFrame の方がよい 場合の方が多いでしょう.それには以下のようにします.

s2.str.split('_').apply(Series)

分割を行った上で指定の行のみが欲しい場合, get メゾットを使用します.

s2.str.split('_').str.get(1)
s2.str.split('_').str[1]     # あるいは普通にアクセスをしても構いません

置換を行う場合,replace を使用します. これは正規表現を受け取ることが可能です.

s3 = Series(['A', 'B', 'C', 'Aaba', 'Baca', '', np.nan, 'CABA', 'dog', 'cat'])
s3.str.replace('^.a|dog', 'XX-XX ', case=False)