我总是使用正则表达式对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