本記事では以下の内容を解説しています.
- DataFrameの要素をチェックし,正規表現を使って置換
[]
で囲まれた部分を[]
ごと除去(正規表現)
公式 Reference: pandas.DataFrame.replace
事前準備
まずはサンプルのDataFrameを作成します.
l = [['[注]かに', 'タラバガニ'], ['くるまえび', '[!]えび']]
df = pd.DataFrame(l, columns=['col_1', 'col_2'])
df
col_1 | col_2 | |
---|---|---|
0 | [注]かに | タラバガニ |
1 | くるまえび | [!]えび |
DataFrameの要素を置換
正規表現で「[]
で囲まれた」を指定
今回は正規表現を用いて置換を行うため,正規表現の準備をします.
正規表現を扱うPython標準ライブラリのre
を使用し「[]
で囲まれた」という正規表現をコンパイルします.これによりコンパイルしたパターンでマッチの有無([]
で囲まれた部分の有無)を確認できます.
# 正規表現を扱うPython標準ライブラリ
import re
# 「[]で囲まれた」を表す正規表現をcompile
pattern = r'\[.+?\]'
compiled_pattern = re.compile(pattern)
DataFrameの要素全体を置換
pandasのreplace
メソッドでDataFrameの要素を置換します.
# 元のdfをコピー
df_all = df.copy()
df_all.replace(compiled_pattern, '', regex=True, inplace=True)
df_all
col_1 | col_2 | |
---|---|---|
0 | かに | タラバガニ |
1 | くるまえび | えび |
解説
replace
メソッドはDataFrame(Series)の要素を置換できるメソッドです.
- 第一引数:正規表現パターンを指定
- 第二引数:置換する文字列1を指定
- 正規表現を使用して置換するため
regex=True
を指定
上記の処理が実行されることで「[]
で囲まれた部分」があれば取り除かれます.
なお,引数inplace=True
で元のdf_all
が更新されるようになります.2
DataFrameの特定の列だけを置換
特定の列だけを置換するには以下のようにします.
# 元のdfをコピー
df_p = df.copy()
df_p['col_1'].replace(compiled_pattern, '', regex=True, inplace=True)
df_p
col_1 | col_2 | |
---|---|---|
0 | かに | タラバガニ |
1 | くるまえび | [!]えび |
指定したcol_1
列だけで[]
が除去されていますね.
ひとこと
DataFrameでさっと文字を綺麗にする際に使えますね.