Closed
Description
This is in 0.17.1. Suppose we have a frame with mixed data types. Suppose also we want to replace a string value with something else. If the frame has only string columns, or maybe string and int columns, this works fine. However, if the frame has string and datetime columns, this raises an exception. Example:
>>> pandas.DataFrame([('-', pandas.to_datetime('20150101')), ('a', pandas.to_datetime('20150102')), ('b', pandas.to_datetime('20150103'))], columns=['a', 'b']).replace('-', numpy.nan)
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
<ipython-input-11-bce7dc78fc44> in <module>()
----> 1 pandas.DataFrame([('-', pandas.to_datetime('20150101')), ('a', pandas.to_datetime('20150102')), ('b', pandas.to_datetime('20150103'))], columns=['a', 'b']).replace('-', numpy.nan)
/.../pandas/core/generic.pyc in replace(self, to_replace, value, inplace, limit, regex, method, axis)
3108 elif not com.is_list_like(value): # NA -> 0
3109 new_data = self._data.replace(to_replace=to_replace, value=value,
-> 3110 inplace=inplace, regex=regex)
3111 else:
3112 msg = ('Invalid "to_replace" type: '
/.../pandas/core/internals.pyc in replace(self, **kwargs)
2868
2869 def replace(self, **kwargs):
-> 2870 return self.apply('replace', **kwargs)
2871
2872 def replace_list(self, src_list, dest_list, inplace=False, regex=False, mgr=None):
/.../pandas/core/internals.pyc in apply(self, f, axes, filter, do_integrity_check, consolidate, **kwargs)
2821
2822 kwargs['mgr'] = self
-> 2823 applied = getattr(b, f)(**kwargs)
2824 result_blocks = _extend_blocks(applied, result_blocks)
2825
/.../pandas/core/internals.pyc in replace(self, to_replace, value, inplace, filter, regex, convert, mgr)
605
606 # we can't process the value, but nothing to do
--> 607 if not mask.any():
608 return self if inplace else self.copy()
609
UnboundLocalError: local variable 'mask' referenced before assignment
And the requisite show_versions:
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.10.final.0
python-bits: 64
OS: Linux
OS-release: 2.6.18-348.2.1.el5
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: C
LANG: en_US.UTF-8
pandas: 0.17.1
nose: 1.3.7
pip: 7.1.2
setuptools: 18.4
Cython: 0.23.4
numpy: 1.10.1
scipy: 0.16.0
statsmodels: 0.6.1
IPython: 4.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.1.0
numexpr: 2.4.4
matplotlib: 1.5.0
openpyxl: 2.2.6
xlrd: 0.9.4
xlwt: 1.0.0
xlsxwriter: 0.7.7
lxml: 3.4.4
bs4: 4.3.2
html5lib: 0.999
httplib2: None
apiclient: None
sqlalchemy: 1.0.9
pymysql: None
psycopg2: None
Jinja2: None