Closed
Description
I am using pandas 0.23.1 with python 3.6.4
import pandas as pd
import regex as re
s = pd.Series(['foo', 'bar'])
pat = re.compile('a')
s.str.replace(pat, ' ')
Raises the error
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-4fc8cf4e83c0> in <module>()
----> 1 s.str.replace(pat, ' ')
~/anaconda3/lib/python3.6/site-packages/pandas/core/strings.py in replace(self, pat, repl, n, case, flags, regex)
2427 def replace(self, pat, repl, n=-1, case=None, flags=0, regex=True):
2428 result = str_replace(self._data, pat, repl, n=n, case=case,
-> 2429 flags=flags, regex=regex)
2430 return self._wrap_result(result)
2431
~/anaconda3/lib/python3.6/site-packages/pandas/core/strings.py in str_replace(arr, pat, repl, n, case, flags, regex)
652 if case is False:
653 flags |= re.IGNORECASE
--> 654 if is_compiled_re or len(pat) > 1 or flags or callable(repl):
655 n = n if n >= 0 else 0
656 compiled = re.compile(pat, flags=flags)
TypeError: object of type '_regex.Pattern' has no len()
I think that the problem comes from the call to the function is_re
, namely
from pandas.core.dtypes.common import is_re
is_re(pat)
returns False
while I think it should return True
.
Metadata
Metadata
Assignees
Labels
No labels