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
在此示例中,
str.replace('a', '@', n=1)
- 只替换a
的第一次出现str.replace('a', '@', n=2)
- 替换前两次出现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。