Description
Using the .where operation on a localized DataFrame Column may raise an exception due to a failure to tz_localize the result of the operation in DatetimeTZBlock
Code Sample, a copy-pastable example if possible
import pandas
import pytz
TZ = pytz.timezone("Europe/Brussels")
# TZ = None # <== with TZ = None, there is no exception
d = datetime(2012, 3, 24, 16, tzinfo=TZ)
# d = pytz.timezone(TZ).localize(d)
idx = pandas.date_range("2012/03/24", "2012/03/26", tz=TZ, freq='H')
df = pandas.Series(None, index=idx, name="d").to_frame()
df["d"] = idx
print("following line is OK")
df["d"].where(df["d"] > d, d)
df["d"] = idx[::-1] # tz_localize will fail
print("following line raises exception")
df["d"].where(df["d"] > d, d)
Actual Output
following line is OK
following line raises exception
==> raises exception "pytz.exceptions.NonExistentTimeError: 2012-03-25 02:00:00" / "TypeError: Could not operate [1332607320000000000] with block values [2012-03-25 02:00:00]"
Expected Output
following line is OK
following line raises exception
[no exception raised]
output of pd.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.5.2.final.0
python-bits: 32
OS: Windows
OS-release: 7
machine: AMD64
processor: Intel64 Family 6 Model 61 Stepping 4, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
pandas: 0.18.1
nose: None
pip: 8.1.2
setuptools: 23.0.0
Cython: None
numpy: 1.11.0
scipy: 0.17.1
statsmodels: None
xarray: None
IPython: 4.2.0
sphinx: None
patsy: None
dateutil: 2.5.3
pytz: 2016.4
blosc: None
bottleneck: None
tables: None
numexpr: 2.6.1
matplotlib: 1.5.1
openpyxl: 2.3.2
xlrd: 1.0.0
xlwt: None
xlsxwriter: 0.9.2
lxml: 3.6.0
bs4: None
html5lib: None
httplib2: 0.9.2
apiclient: None
sqlalchemy: 1.0.12
pymysql: None
psycopg2: 2.6.2 (dt dec pq3 ext)
jinja2: 2.8
boto: None
pandas_datareader: None