ここでは PythonのPandasにおける文字列の置換(str.replace
やreplace
メソッド) について、基本から応用まで詳しく解説します。
目次
Pandasにおける文字列置換の方法
Pandasで文字列を置換する方法は大きく分けて以下の2種類があります。
Series.str.replace()
を使う方法- DataFrameやSeriesの文字列データに対して部分置換を行う
- 正規表現の利用が可能
- 細かいパターンマッチに便利
DataFrame.replace()
/Series.replace()
を使う方法- 値そのものを置換する
- 単純な値置換や複数指定置換に便利
- 正規表現もサポート
str.replace()
を使った文字列部分の置換
基本構文
df['列名'].str.replace('置換前', '置換後', regex=False)
※このコード単体では、出力はできません。
regex=False
を指定すると単純な文字列置換regex=True
(デフォルト)は正規表現として解釈
使用例
import pandas as pd
df = pd.DataFrame({
'text': ['apple pie', 'banana cake', 'cherry tart']
})
# 'a' を 'A' に置換
df['text_replace'] = df['text'].str.replace('a', 'A', regex=False)
print(df)
正規表現を使った str.replace()
数字を削除
df = pd.DataFrame({
'code': ['abc123', 'def456', 'ghi789']
})
df['removed'] = df['code'].str.replace(r'\d+', '', regex=True)
print(df)
replace()
を使った値の置換
基本構文
df['列名'].replace({'置換前1': '置換後1', '置換前2': '置換後2'})
※このコード単体では、出力はできません。
使用例
df = pd.DataFrame({
'fruit': ['apple', 'banana', 'cherry', 'banana']
})
# 辞書を使って複数置換
df['fruit_replace'] = df['fruit'].replace({
'apple': 'APPLE',
'banana': 'BANANA'
})
print(df)
DataFrame全体に対する置換
全カラムに対して適用
df = pd.DataFrame({
'col1': ['foo', 'bar', 'baz'],
'col2': ['foo123', 'bar456', 'baz789']
})
# 'foo' を 'FOO' に置換(全カラム対象)
df_replace = df.replace('foo', 'FOO', regex=False)
print(df_replace)
応用例
部分一致の置換(前方一致)
import pandas as pd
# データ準備
df = pd.DataFrame({
'name': ['Mr. Smith', 'Ms. Johnson', 'Dr. Brown']
})
# 正規表現で敬称を削除
df['clean_name'] = df['name'].str.replace(r'^(Mr\.|Ms\.|Dr\.)\s*', '', regex=True)
print("=== セクション5 ===")
print(df)
大文字小文字を区別しない置換
import pandas as pd
# データ準備
df = pd.DataFrame({
'text': ['Dog', 'dog', 'DOG']
})
# 大文字小文字を無視して 'dog' → 'cat'
df['replace'] = df['text'].str.replace('dog', 'cat', case=False, regex=True)
print("=== セクション6 ===")
print(df)
まとめ
- 部分的な文字列置換 →
Series.str.replace()
- 単純な値や複数値の置換 →
replace()
- 正規表現を使うと柔軟な置換が可能
- DataFrame全体にも適用できる
以上、PythonのPandasの文字列の置換についてでした。
最後までお読みいただき、ありがとうございました。