Skip to content

Commit 69d5bd8

Browse files
committed
BUG: integer slices should never access label-indexing, GH #700
1 parent bc6e820 commit 69d5bd8

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

pandas/core/series.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,9 @@ def __getitem__(self, key):
309309
def _get_with(self, key):
310310
# other: fancy integer or otherwise
311311
if isinstance(key, slice):
312-
if self.index.inferred_type == 'integer':
312+
from pandas.core.indexing import _is_index_slice
313+
314+
if self.index.inferred_type == 'integer' or _is_index_slice(key):
313315
indexer = key
314316
else:
315317
indexer = self.ix._convert_to_indexer(key, axis=0)
@@ -390,7 +392,8 @@ def __setitem__(self, key, value):
390392
def _set_with(self, key, value):
391393
# other: fancy integer or otherwise
392394
if isinstance(key, slice):
393-
if self.index.inferred_type == 'integer':
395+
from pandas.core.indexing import _is_index_slice
396+
if self.index.inferred_type == 'integer' or _is_index_slice(key):
394397
indexer = key
395398
else:
396399
indexer = self.ix._convert_to_indexer(key, axis=0)

pandas/tests/test_multilevel.py

+15
Original file line numberDiff line numberDiff line change
@@ -1015,6 +1015,21 @@ def test_level_with_tuples(self):
10151015
assert_frame_equal(result, expected)
10161016
assert_frame_equal(result2, expected)
10171017

1018+
def test_int_series_slicing(self):
1019+
s = self.ymd['A']
1020+
result = s[5:]
1021+
expected = s.reindex(s.index[5:])
1022+
assert_series_equal(result, expected)
1023+
1024+
exp = self.ymd['A'].copy()
1025+
s[5:] = 0
1026+
exp.values[5:] = 0
1027+
self.assert_(np.array_equal(s.values, exp.values))
1028+
1029+
result = self.ymd[5:]
1030+
expected = self.ymd.reindex(s.index[5:])
1031+
assert_frame_equal(result, expected)
1032+
10181033
if __name__ == '__main__':
10191034

10201035
# unittest.main()

0 commit comments

Comments
 (0)