Pandas Series.str.replace() 関数

Pandas 常用函数Pandas よく使われる関数


Series.str.replace()Pandas において、文字列内の指定された内容を置換するための関数です。

データ処理の過程では、誤ったテキストの修正、データ形式の標準化、不要な文字の削除など、テキストに対する置換操作が頻繁に必要になります。replace()この関数は文字列内の指定された内容を柔軟に置換でき、正規表現マッチングをサポートしています。

単語の意味:replace「置換」という意味で、新しい内容で古い内容を置き換えることを表します。


基本構文とパラメータ

str.replace()Series の文字列アクセサメソッドです。そのため、まず文字列を含む Series が必要であり、次に.strアクセサを使用して呼び出します。

構文形式

Series.str.replace(pat, repl, regex=False)

パラメータの説明

パラメータ 型 必須かどうか 説明 デフォルト値
pat str または regex 必須 置換するパターン。通常の文字列または正規表現(regex=True の場合)を指定できます。 -
repl str または callable 必須 置換後の内容。文字列または呼び出し可能な関数(高度な置換用)を指定できます。 -
regex bool オプション pat パラメータを正規表現として処理するかどうか。デフォルトは False です。 False

関数の説明

  • 戻り値:置換後の新しい Series を返します。
  • 効果:Series 内の各文字列要素でマッチした内容を新しい内容に置換します。
  • 注意:デフォルトでは通常の文字列マッチングを使用します。正規表現マッチングが必要な場合は、設定が必要です。regex=True。

例

簡単なものから複雑なものまでの一連の例を通して、完全にstr.replace()使い方をマスターしましょう。

例1:基本用法 - 簡単な文字列置換

例

import pandas as pd

# テキストを含む Series を作成する
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])

# 'ap' を 'XX' に置換する
result = s.str.replace('ap', 'XX')

print("元の Series:")
print(s)
print("n置換後の結果:")
print(result)

出力結果:

原始 Series:
0        apple
1       banana
2       apricot
3    pineapple
dtype: object

替换后的结果:
0       XXle
1       banana
2       XXricot
3    XXneXXple

コード解説:

  1. s.str.replace('ap', 'XX')出現するすべての 'ap' を 'XX' に置換します。
  2. デフォルトでは、最初の一致項目のみ置換されます(文字列内に複数回出現する場合、最初のものだけが置換されます)。
  3. 正規表現フラグを追加することで、すべての一致項目を置換できます。

例2:正規表現ですべての一致項目を置換

すべての一致項目を置換する必要がある場合は、正規表現を使用できます。

例

import pandas as pd

# テキストを含む Series を作成する
s = pd.Series(['apple', 'banana', 'apricot', 'pineapple'])

# 正規表現を使用してすべての 'ap' を 'XX' に置換する
result = s.str.replace('ap', 'XX', regex=True)

print("元の Series:")
print(s)
print("nすべての 'ap' を置換した結果:")
print(result)

出力結果:

原始 Series:
0        apple
1       banana
2       apricot
3    pineapple
dtype: object

替换所有 'ap' 后的结果:
0       XXle
1       banana
2       XXricot
3    XXneXXple

コード解説:

  • 設定regex=True後、正規表現を使用してマッチングします。
  • 正規表現では、'ap'文字列内に出現するすべての 'ap' にマッチします。
  • 'pineapple' には 'ap' が2つあり、両方とも 'XX' に置換されます。

例3:数字と記号の置換

replace()データのクリーニングに使用できます。たとえば、数字や特殊記号を削除します。

例

import pandas as pd

# 混合コンテンツを含む Series を作成する
s = pd.Series(['phone: 123-456-7890', 'price: $99.99', 'date: 2024-01-01'])

# すべての数字を削除する
result_digits = s.str.replace(r'd', '', regex=True)

# すべての非英数字文字を削除する(スペースは保持)
result_special = s.str.replace(r'[^a-zA-Z0-9s]', '', regex=True)

print("元の Series:")
print(s)
print("nすべての数字を削除した後:")
print(result_digits)
print("nすべての特殊文字を削除した後:")
print(result_special)

出力結果:

原始 Series:
0    phone: 123-456-7890
1       price: $99.99
2       date: 2024-01-01
dtype: object

移除所有数字后:
phone: ---
price: $.$
date: ------

移除所有特殊字符后:
phone 1234567890
price 9999
date 20240101

コード解説:

  • r'd'は正規表現であり、任意の数字にマッチします。
  • r'[^a-zA-Z0-9s]'すべての非英数字かつ非スペースの文字にマッチします。
  • これはデータクリーニングにおいて非常に一般的な操作です。

例4:コールバック関数を使用した置換

replパラメータには関数を指定でき、より複雑な置換ロジックに使用できます。

例

import pandas as pd

# テキストを含む Series を作成する
s = pd.Series(['hello', 'world', 'サンプル', 'python'])

# コールバック関数を使用して、マッチした文字列を大文字に変換する
result = s.str.replace(r'[aeiou]', lambda m: m.group(0).upper(), regex=True)

print("元の Series:")
print(s)
print("n母音を大文字に変換した後:")
print(result)

出力結果:

原始 Series:
0       hello
1       world
2      サンプル
3      python
dtype: object

将元音字母转为大写后:
0       hEllo
1       wOrld
2       example
3       pythOn

コード解説:

  • コールバック関数はマッチオブジェクトを受け取り、次を使用できますm.group(0)マッチした内容を取得します。
  • 母音(a, e, i, o, u)を大文字に変換します。
  • これはより複雑な置換ロジックを実装するための良い方法です。

例5:データ形式の標準化

実際のプロジェクトでは、replace()データ形式の標準化によく使用されます。

例

import pandas as pd

# ユーザー入力の国名をシミュレート(形式が統一されていない)
countries = pd.Series(['USA', 'U.S.A.', 'U.S.A', 'usa', 'us', 'United States'])

# 標準名に一括置換する
result = countries.replace({
    'USA': 'US',
    'U.S.A.': 'US',
    'U.S.A': 'US',
    'usa': 'US',
    'us': 'US',
    'United States': 'US'
})

print("元の国名:")
print(countries)
print("n統一後の結果:")
print(result)

出力結果:

原始国家名称:
0           USA
1        U.S.A.
2         U.S.A
3           usa
4            us
5    United States
dtype:
object

统一后的结果:
0    US
1    US
2    US
3    US
4    0    US
dtype: object

コード解説:

  • この例では Series のreplace()メソッド(str.replace ではありません)を使用しています。
  • 辞書を渡すことで、複数の値を一括置換できます。
  • さまざまな異なる表記を標準形式に統一します。

注意事項

  • デフォルトでは(regex=False),patパラメータは通常の文字列として扱われ、最初の一致項目のみ置換されます。
  • 設定regex=True後、正規表現を使用してマッチングすることで、すべての一致項目を置換できます。
  • 正規表現内の一部の特殊文字(例:.、*など)はエスケープが必要です。
  • Series に NaN 値が含まれている場合、replace()NaN が返されます。
  • この関数は新しい Series を返し、元のデータは変更されません。

Pandas 常用函数Pandas よく使われる関数

その他の拡張