Skip to content

Commit e147e0f

Browse files
committed
BUG: logical error in DatetimeIndex.intersection with irregular indexes close #1551
1 parent 0e5fc44 commit e147e0f

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

RELEASE.rst

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ pandas 0.8.1
6565
- Work around numpy.concatenate use/bug in Series.set_value (#1561)
6666
- Ensure Series/DataFrame are sorted before resampling (#1580)
6767
- Fix unhandled IndexError when indexing very large time series (#1562)
68+
- Fix DatetimeIndex intersection logic error with irregular indexes (#1551)
6869

6970
pandas 0.8.0
7071
============

pandas/tseries/index.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -815,8 +815,9 @@ def intersection(self, other):
815815
result.offset = to_offset(result.inferred_freq)
816816
return result
817817

818-
elif other.offset != self.offset or (not self.is_monotonic or
819-
not other.is_monotonic):
818+
elif (other.offset is None or self.offset is None or
819+
other.offset != self.offset or
820+
(not self.is_monotonic or not other.is_monotonic)):
820821
result = Index.intersection(self, other)
821822
if isinstance(result, DatetimeIndex):
822823
if result.freq is None:

pandas/tseries/tests/test_timeseries.py

+9
Original file line numberDiff line numberDiff line change
@@ -1802,6 +1802,15 @@ def test_union(self):
18021802
df = DataFrame({'s1' : s1, 's2' : s2})
18031803
self.assert_(df.index.values.dtype == np.dtype('M8[ns]'))
18041804

1805+
def test_intersection(self):
1806+
rng = date_range('6/1/2000', '6/15/2000', freq='D')
1807+
rng = rng.delete(5)
1808+
1809+
rng2 = date_range('5/15/2000', '6/20/2000', freq='D')
1810+
rng2 = DatetimeIndex(rng2.values)
1811+
1812+
result = rng.intersection(rng2)
1813+
self.assert_(result.equals(rng))
18051814

18061815
class TestTimestamp(unittest.TestCase):
18071816

0 commit comments

Comments
 (0)