Pandas 字符串替换为正则表达式参数以进行非正则表达式替换

问题描述 投票:0回答:1

假设我有一个数据框,我想通过pd.Series.str.replace替换仅包含字符和/或数字的非正则表达式子字符串。文档指出此函数相当于

str.replace
re.sub()
,具体取决于
regex
参数(默认为 False)。

除了很可能是矫枉过正之外,如果使用

regex=True
调用该函数以进行非正则表达式替换(例如性能),是否还有任何缺点需要考虑?如果有,是哪些?当然,我并不建议这样使用该功能。

示例:替换下面数据框中的“大象”。

import pandas as pd

data = {'Animal_Name': ['Elephant African', 'Elephant Asian', 'Elephant Indian', 'Elephant Borneo', 'Elephant Sumatran']}
df = pd.DataFrame(data)

df = df['Animal_Name'].str.replace('Elephant', 'Tiger', regex=True)
python pandas replace
1个回答
0
投票

当设置

str.replace()
标志时,Pandas
re.sub()
函数在底层使用
regex=True
。 否则,对于
regex=False
,它使用 Python 基本
replace()
字符串函数。

re.sub
replace
的实现不一样。 一般来说,与使用
re.sub
相比,我们预计使用
replace
进行子字符串替换会产生更高的开销。 其中一个开销是,当使用
re.sub
str.replace
regex=True)
时,第一个参数首先需要解析为正则表达式,然后才能使用。

一般来说,如果不需要正则表达式,则应避免使用它们,因此当不需要正则表达式时,坚持使用

regex=False
是提高性能的最佳选择。

© www.soinside.com 2019 - 2024. All rights reserved.