Skip to content

Commit f48513a

Browse files
committed
BUG: unpickling length-0 DateRange as Series.index, close #1274
1 parent 737c5ce commit f48513a

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

pandas/core/index.py

+7-2
Original file line numberDiff line numberDiff line change
@@ -2396,8 +2396,13 @@ def _handle_legacy_indexes(indexes):
23962396
converted = []
23972397
for index in indexes:
23982398
if isinstance(index, DateRange):
2399-
index = DatetimeIndex(start=index[0], end=index[-1],
2400-
freq=index.offset, tz=index.tzinfo)
2399+
if len(index) == 0:
2400+
kwds = dict(data=[], freq=index.offset, tz=index.tzinfo)
2401+
else:
2402+
kwds = dict(start=index[0], end=index[-1],
2403+
freq=index.offset, tz=index.tzinfo)
2404+
2405+
index = DatetimeIndex(**kwds)
24012406

24022407
converted.append(index)
24032408

357 Bytes
Binary file not shown.

pandas/tseries/tests/test_timeseries.py

+12
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,18 @@ def test_unpickle_legacy_series(self):
782782
self.assert_((unpickled.index == dtindex).all())
783783
self.assertEquals(unpickled.index.offset, BDay(1, normalize=True))
784784

785+
def test_unpickle_legacy_len0_daterange(self):
786+
pth, _ = os.path.split(os.path.abspath(__file__))
787+
filepath = os.path.join(pth, 'data', 'series_daterange0.pickle')
788+
789+
result = com.load(filepath)
790+
791+
ex_index = DatetimeIndex([], freq='B')
792+
793+
self.assert_(result.index.equals(ex_index))
794+
self.assert_(isinstance(result.index.freq, offsets.BDay))
795+
self.assert_(len(result) == 0)
796+
785797
def test_arithmetic_interaction(self):
786798
index = self.frame.index
787799
obj_index = index.asobject

0 commit comments

Comments
 (0)