Python Pandas:将默认值更改为regex=true



我总是使用正则表达式对Pandas列进行匹配和替换。

是否可以将所有Series.str.replace,Series.str.contains等的默认值设置为regex=True以避免FutureWarning: The default value of regex will change from True to False in a future version?

这是一个常见的警告,您可以通过以下方式定义自己的rereplace函数而不是Series.str.replace来消除它:

pd.Series.str.rereplace = lambda self, pat, repl, n=-1, case=None, flags=0: self.replace(pat, repl, n, case, flags, regex=True)

您也可以自定义pandas.Series.str.contains:

pd.Series.str.recontains = lambda self, pat, case=True, flags=0, na=None: self.contains(pat, case, flags, na, regex=True)

然后,您将能够使用df['col'].str.rereplace(pattern, replacement)运行它。

查看Pandas测试:

import pandas as pd
pd.Series.str.rereplace = lambda self, pat, repl, n=-1, case=None, flags=0: self.replace(pat, repl, n, case,flags, regex=True)
df=pd.DataFrame({'col': ['12 pts']})
df['col'].str.rereplace(r'd+', 'XXX')

输出:

>>> df['col'].str.rereplace(r'd+', 'XXX')
0    XXX pts
Name: col, dtype: object
>>> df['col'].str.recontains(r'ptS', case=True)
0    False

最新更新