pandasの文字列メソッドで置換や空白削除などの処理を行う

pandasでは、pandas.DataFrameの列や行(= pandas.Series)の要素の文字列に対して一括で処理を行うために、pandas.Seriesに文字列メソッドが準備されています。

API Reference — pandas 0.21.1 documentation

以下のようなメソッドがあり、Python標準の文字列(str型オブジェクト)に対するメソッドと同じ動作をします。

置換 str.replace()

空白削除 str.strip() str.lstrip() str.rstrip()

大文字小文字変換 str.lower() str.upper() str.capitalize() str.title()

それぞれ例を挙げて説明します。 そのほかの文字列メソッドの活用法については以下の記事を参照。

文字列を置換する

str.replace(): 文字列を置換する

import pandas as pd

s = pd.Series([' a-a-x ', ' b-x-b ', ' x-c-c '])
print(s)
# 0     a-a-x
# 1     b-x-b
# 2     x-c-c
# dtype: object

s_new = s.str.replace('x', 'z')
print(s_new)
# 0     a-a-z
# 1     b-z-b
# 2     z-c-c
# dtype: object

pandas.DataFrameの列を更新する(置き換える)場合は元の列に代入します。他のメソッドでも同じ方法。

df = pd.DataFrame([[' a-a-x-1 ', ' a-a-x-2 '],
                   [' b-x-b-1 ', ' b-x-b-2 '],
                   [' x-c-c-1 ', ' x-c-c-2 ']],
                  columns=['col1', 'col2'])
print(df)
#         col1       col2
# 0   a-a-x-1    a-a-x-2
# 1   b-x-b-1    b-x-b-2
# 2   x-c-c-1    x-c-c-2

df['col1'] = df['col1'].str.replace('x', 'z')
print(df)
#         col1       col2
# 0   a-a-z-1    a-a-x-2
# 1   b-z-b-1    b-x-b-2
# 2   z-c-c-1    x-c-c-2

文字列の空白を削除する

str.strip(): 左右(先頭・末尾)両方の空白を削除する

s_new = s.str.strip()
print(s_new)
# 0    a-a-x
# 1    b-x-b
# 2    x-c-c
# dtype: object

除去する文字を引数として指定することもできます。指定した文字列に含まれる文字が除去される。str.lstrip(), str.rstrip()でも同様。

s_new = s.str.strip(' x')
print(s_new)
# 0     a-a-
# 1    b-x-b
# 2     -c-c
# dtype: object


pandas.DataFrameの場合。str.replace()と同じ。
df['col1'] = df['col1'].str.strip()
print(df)
#       col1       col2
# 0  a-a-z-1   a-a-x-2
# 1  b-z-b-1   b-x-b-2
# 2  z-c-c-1   x-c-c-2

str.lstrip(): 左側(先頭)の空白を削除する

s_new = s.str.lstrip()
print(s_new)
# 0    a-a-x
# 1    b-x-b
# 2    x-c-c
# dtype: object

str.rstrip(): 右側(末尾)の空白を削除する

s_new = s.str.rstrip()
print(s_new)
# 0     a-a-x
# 1     b-x-b
# 2     x-c-c
# dtype: object

大文字小文字を変換する

以下のようなpandas.Seriesを例とします。

s = pd.Series(['Hello World', 'hello world', 'HELLO WORLD'])
print(s)
# 0    Hello World
# 1    hello world
# 2    HELLO WORLD
# dtype: object

pandas.DataFrameの場合は省略するが、他のメソッドと同じ方法が使える。

str.lower(): 小文字に変換する

s_new = s.str.lower()
print(s_new)
# 0    hello world
# 1    hello world
# 2    hello world
# dtype: object

str.upper(): 大文字に変換する

s_new = s.str.upper()
print(s_new)
# 0    HELLO WORLD
# 1    HELLO WORLD
# 2    HELLO WORLD
# dtype: object

str.capitalize(): 最初の文字を大文字、他を小文字に変換する

s_new = s.str.capitalize()
print(s_new)
# 0    Hello world
# 1    Hello world
# 2    Hello world
# dtype: object

str.title(): 単語の先頭の文字を大文字、他を小文字に変換する

s_new = s.str.title()
print(s_new)
# 0    Hello World
# 1    Hello World
# 2    Hello World
# dtype: object

シェア

関連カテゴリー

Python pandas

pandas-datareaderで株価や人口のデータを取得 pandas.DataFrameをクリップボードにコピーするto_clipboard pandasで最大値・最小値の行名・列名を取得するidxmax, idxmin pandasでクリップボードの中身をDataFrameとして取得するread_clipboard pandasでExcelファイル(xlsx, xls)の書き込み(to_excel) pandas.DataFrameのforループ処理(イテレーション) pandas.DataFrameをJSON文字列・ファイルに変換・保存(to_json) pandasの表示設定変更(小数点以下桁数、有効数字、最大行数・列数など) 『Pythonデータサイエンスハンドブック』は良書(NumPy, pandasほか) pandasでstack, unstack, pivotを使ってデータを整形 『Python Data Science Handbook』(英語の無料オンライン版あり) pandasの時系列データのタイムゾーンを処理(tz_convert, tz_localize) pandasのMultiIndexから任意の行・列を選択、抽出 pandas.DataFrameの行番号、列番号を取得 pandas.DataFrameの列をインデックス(行名)に割り当てるset_index

Last Updated: 6/26/2019, 10:34:03 PM