Pandas str.replace()

Pandas 中的 str.replace() 方法用于替换 Series 中每个字符串元素内的子字符串为另一个字符串。

示例

import pandas as pd

# create a Series
data = pd.Series(['apple', 'banana', 'cherry'])

# use str.replace() to replace 'a' with '@' data = data.str.replace('a', '@')
print(data) ''' Output 0 @pple 1 b@n@n@ 2 cherry dtype: object '''

str.replace() 语法

Pandas 中 str.replace() 方法的语法是

Series.str.replace(pat, repl, n=-1, case=None, regex=True)

str.replace() 参数

str.replace() 方法接受以下参数

  • pat - 要替换的字符串或正则表达式模式
  • repl - 用于替换的字符串
  • n (可选) - 每个字符串的最大替换次数。-1 表示替换所有出现。
  • case (可选) - 确定操作是否区分大小写
  • regex (可选) - 如果为 True,则假定 pat 是一个正则表达式。如果为 False,则将 pat 视为字面字符串。

str.replace() 返回值

str.replace() 方法返回一个具有相同大小的 Series,其中包含替换后的字符串。


示例 1:使用 str.replace() 替换子字符串

import pandas as pd

# create a Series 
cities = pd.Series(['San Jose', 'Los Angeles', 'San Francisco'])

# use str.replace() to replace 'San' with 'Santa' cities = cities.str.replace('San', 'Santa')
print(cities)

输出

0     Santa Jose
1     Los Angeles
2     Santa Francisco
dtype: object

在上面的示例中,我们使用 str.replace('San', 'Santa') 方法将 cities Series 中每个字符串中的子字符串 San 替换为 Santa


示例 2:使用 str.replace() 中的 n 参数限制替换次数

import pandas as pd

# create a Series
data = pd.Series(['apple', 'banana', 'cherry'])

# replace only the first occurrence of 'a' replace_1 = data.str.replace('a', '@', n=1)
# replace the first two occurrences of 'a' replace_2 = data.str.replace('a', '@', n=2)
# no replacement will be made with n=0 replace_3 = data.str.replace('a', '@', n=0)
print("Original Series:") print(data) print("\nReplace first occurrence:\n") print(replace_1) print("\nReplace first two occurrences:\n") print(replace_2) print("\nNo replacement (n=0):") print(replace_3)

输出

Original Series:
0     apple
1    banana
2    cherry
dtype: object

Replace first occurrence:

0     @pple
1    b@nana
2    cherry
dtype: object

Replace first two occurrences:

0     @pple
1    b@n@na
2    cherry
dtype: object

No replacement (n=0):
0     apple
1    banana
2    cherry
dtype: object

在此示例中,

  1. str.replace('a', '@', n=1) - 只替换 a 的第一次出现
  2. str.replace('a', '@', n=2) - 替换前两次出现
  3. str.replace('a', '@', n=0) - 由于 n=0,不发生替换

示例 3:字符串替换中的大小写敏感性

import pandas as pd

# create a Series
data = pd.Series(['Apple', 'Banana', 'Cherry'])

# case sensitive replacement (default behavior) case_sensitive_replace = data.str.replace('a', '@')
# case insensitive replacement case_insensitive_replace = data.str.replace('a', '@', case=False)
print("\nCase Sensitive Replacement:") print(case_sensitive_replace) print("\nCase Insensitive Replacement:") print(case_insensitive_replace)

输出

Case Sensitive Replacement:
0     Apple
1    B@n@n@
2    Cherry
dtype: object

Case Insensitive Replacement:
0     @pple
1    B@n@n@
2    Cherry
dtype: object

这里,

  • str.replace('a', '@') - 默认区分大小写,只将小写 a 替换为 @
  • str.replace('a', '@', case=False) - 显示不区分大小写的替换,其中大写 A 和小写 a 都被替换为 @

示例 4:str.replace() 中 regex 参数的用法

import pandas as pd

# create a Series 
products = pd.Series(['T-shirt 12', 'Jeans 30', 'Hat', 'Dress 8', 'Shoes 42'])

# use str.replace() with regex to replace numeric sizes products_replaced = products.str.replace(r'\d+', 'SIZE', regex=True)
print(products_replaced)

输出

0    T-shirt SIZE
1      Jeans SIZE
2           Hat
3      Dress SIZE
4      Shoes SIZE
dtype: object

在上面的示例中,模式 r'\d+' 匹配产品名称中的数字序列。

通过将 regex 设置为 True,我们在 str.replace() 方法中启用了正则表达式的使用。

因此,该方法将这些序列替换为字符串 SIZE

注意:要了解有关正则表达式的更多信息,请访问 Python RegEx

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战