Skip to content

Commit 6a67e3b

Browse files
committed
BUG: label slicing with duplicate values, close #1480
1 parent ef79388 commit 6a67e3b

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

pandas/core/indexing.py

+4
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,10 @@ def _convert_to_indexer(self, obj, axis=0):
341341
else:
342342
try:
343343
i, j = labels.slice_locs(start, stop)
344+
if isinstance(i, slice):
345+
i = i.start
346+
if isinstance(j, slice):
347+
j = j.stop
344348
slicer = slice(i, j, obj.step)
345349
except Exception:
346350
if _is_index_slice(obj):

pandas/tseries/tests/test_timeseries.py

+14
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,20 @@ def test_duplicate_dates_indexing(self):
7979
self.assertRaises(KeyError, ts.__getitem__, datetime(2000, 1, 6))
8080
self.assertRaises(KeyError, ts.__setitem__, datetime(2000, 1, 6), 0)
8181

82+
def test_range_slice(self):
83+
idx = DatetimeIndex(['1/1/2000', '1/2/2000', '1/2/2000', '1/3/2000',
84+
'1/4/2000'])
85+
86+
ts = Series(np.random.randn(len(idx)), index=idx)
87+
88+
result = ts['1/2/2000':]
89+
expected = ts[1:]
90+
assert_series_equal(result, expected)
91+
92+
result = ts['1/2/2000':'1/3/2000']
93+
expected = ts[1:4]
94+
assert_series_equal(result, expected)
95+
8296
def test_groupby_average_dup_values(self):
8397
result = self.dups.groupby(level=0).mean()
8498
expected = self.dups.groupby(self.dups.index).mean()

0 commit comments

Comments
 (0)