Closed
Description
In Pandas 0.17, if I construct a Series
which contains a day light saving transition, then Pandas crashes with an AmbiguousTimeError
.
Here's the minimal code example to reproduce the bug:
import pandas as pd
index = pd.date_range("2013-10-26 23:00", "2013-10-27 01:00",
tz="Europe/London", freq="H")
series = pd.Series(0, index=index)
And here's the traceback:
In [4]: ---------------------------------------------------------------------------
AmbiguousTimeError Traceback (most recent call last)
<ipython-input-4-5deb3c83fafd> in <module>()
----> 1 __pyfile = open('''/tmp/py7201vZi''');exec(compile(__pyfile.read(), '''/home/jack/temp/pandas_dst_bug.py''', 'exec'));__pyfile.close(); import os; os.remove('''/tmp/py7201vZi''')
/home/jack/temp/pandas_dst_bug.py in <module>()
2 index = pd.date_range("2013-10-26 23:00", "2013-10-27 01:00",
3 tz="Europe/London", freq="H")
----> 4 series = pd.Series(0, index=index)
/usr/local/lib/python2.7/dist-packages/pandas/tseries/index.pyc in date_range(start, end, periods, freq, tz, normalize, name, closed)
1912 return DatetimeIndex(start=start, end=end, periods=periods,
1913 freq=freq, tz=tz, normalize=normalize, name=name,
-> 1914 closed=closed)
1915
1916
/usr/local/lib/python2.7/dist-packages/pandas/util/decorators.pyc in wrapper(*args, **kwargs)
87 else:
88 kwargs[new_arg_name] = new_arg_value
---> 89 return func(*args, **kwargs)
90 return wrapper
91 return _deprecate_kwarg
/usr/local/lib/python2.7/dist-packages/pandas/tseries/index.pyc in __new__(cls, data, freq, start, end, periods, copy, name, tz, verify_integrity, normalize, closed, ambiguous, dtype, **kwargs)
234 return cls._generate(start, end, periods, name, freq,
235 tz=tz, normalize=normalize, closed=closed,
--> 236 ambiguous=ambiguous)
237
238 if not isinstance(data, (np.ndarray, Index, ABCSeries)):
/usr/local/lib/python2.7/dist-packages/pandas/tseries/index.pyc in _generate(cls, start, end, periods, name, offset, tz, normalize, ambiguous, closed)
450
451 if end is not None and end.tz is None:
--> 452 end = end.tz_localize(tz)
453
454 if start and end:
pandas/tslib.pyx in pandas.tslib.Timestamp.tz_localize (pandas/tslib.c:11965)()
pandas/tslib.pyx in pandas.tslib.tz_localize_to_utc (pandas/tslib.c:64516)()
AmbiguousTimeError: Cannot infer dst time from Timestamp('2013-10-27 01:00:00'), try using the 'ambiguous' argument
I'm not certain but I expect this bug is related to #11619
This bug report follows on from #11624
I'm 99.999% certain that this bug did not exist in Pandas 0.16.2
In [30]: show_versions()
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.9.final.0
python-bits: 64
OS: Linux
OS-release: 3.19.0-33-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_GB.UTF-8
pandas: 0.17.0
nose: 1.3.7
pip: 1.5.6
setuptools: 15.2
Cython: 0.23.1
numpy: 1.10.1
scipy: 0.16.0
statsmodels: 0.6.1
IPython: 4.0.0
sphinx: 1.2.3
patsy: 0.3.0
dateutil: 2.4.2
pytz: 2015.7
blosc: None
bottleneck: None
tables: 3.2.2
numexpr: 2.4.6
matplotlib: 1.4.3
openpyxl: None
xlrd: 0.9.2
xlwt: None
xlsxwriter: None
lxml: None
bs4: 4.3.2
html5lib: 0.999
httplib2: 0.9
apiclient: None
sqlalchemy: None
pymysql: None
psycopg2: 2.5.3 (dt dec pq3 ext)
Finally, just to say another huge thank you to everyone who supports Pandas. It must be a huge amount of work and I am hugely grateful. Pandas is an awesome tool. Thank you.