-
- Notifications
You must be signed in to change notification settings - Fork 19.4k
Closed
Labels
Milestone
Description
I wanted to pass a function as repl to .str.replace so it was used by re.sub. But it seems that a bug fix for #13438 prevented that to happen. What are your thoughts about this?
Code Sample
s = pd.Series(['foo', 'bar', 'baz']) s.str.replace(r'[aeiou]', lambda m: m.group().upper())Problem description
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-26-bc58c5c60bd2> in <module>() ----> 1 s.str.replace(r'[aeiou]', lambda m: m.group().upper()) /anaconda3/lib/python3.4/site-packages/pandas/core/strings.py in replace(self, pat, repl, n, case, flags) 1504 def replace(self, pat, repl, n=-1, case=True, flags=0): 1505 result = str_replace(self._data, pat, repl, n=n, case=case, -> 1506 flags=flags) 1507 return self._wrap_result(result) 1508 /anaconda3/lib/python3.4/site-packages/pandas/core/strings.py in str_replace(arr, pat, repl, n, case, flags) 320 # Check whether repl is valid (GH 13438) 321 if not is_string_like(repl): --> 322 raise TypeError("repl must be a string") 323 use_re = not case or len(pat) > 1 or flags 324 TypeError: repl must be a stringExpected Output
0 fOO 1 bAr 2 bAz dtype: object Output of pd.show_versions()
INSTALLED VERSIONS ------------------ commit: None python: 3.4.5.final.0 python-bits: 64 OS: Linux OS-release: 2.6.32-573.3.1.el6.x86_64 machine: x86_64 processor: x86_64 byteorder: little LC_ALL: en_US.UTF-8 LANG: en_US.UTF-8 LOCALE: en_US.UTF-8 pandas: 0.19.0 nose: 1.3.7 pip: 9.0.1 setuptools: 18.1 Cython: 0.25.1 numpy: 1.11.1 scipy: 0.17.1 statsmodels: 0.6.1 xarray: None IPython: 5.0.0 sphinx: 1.3.1 patsy: 0.4.0 dateutil: 2.4.2 pytz: 2015.7 blosc: None bottleneck: 1.0.0 tables: 3.2.2 numexpr: 2.6.1 matplotlib: 1.5.0 openpyxl: 2.3.2 xlrd: 0.9.4 xlwt: None xlsxwriter: None lxml: 3.5.0 bs4: 4.4.1 html5lib: None httplib2: None apiclient: None sqlalchemy: 1.0.14 pymysql: None psycopg2: 2.6.1 (dt dec pq3 ext) jinja2: 2.8 boto: 2.38.0 pandas_datareader: None