Skip to content

Commit c6250b2

Browse files
committed
bug in py2.7 duplicate indexing
1 parent 042b09e commit c6250b2

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

pandas/index.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ cdef class IndexEngine:
182182
Py_ssize_t i, n
183183
int last_true
184184

185-
values = self._get_index_values()
185+
values = np.array(self._get_index_values(), copy=False)
186186
n = len(values)
187187

188188
result = np.empty(n, dtype=bool)

pandas/tests/indexes/test_multi.py

+11
Original file line numberDiff line numberDiff line change
@@ -1117,6 +1117,17 @@ def test_get_loc_duplicates(self):
11171117
xp = 0
11181118
assert (rs == xp)
11191119

1120+
def test_get_value_duplicates(self):
1121+
index = MultiIndex(levels=[['D', 'B', 'C'],
1122+
[0, 26, 27, 37, 57, 67, 75, 82]],
1123+
labels=[[0, 0, 0, 1, 2, 2, 2, 2, 2, 2],
1124+
[1, 3, 4, 6, 0, 2, 2, 3, 5, 7]],
1125+
names=['tag', 'day'])
1126+
1127+
assert index.get_loc('D') == slice(0, 3)
1128+
with pytest.raises(KeyError):
1129+
index._engine.get_value(np.array([]), 'D')
1130+
11201131
def test_get_loc_level(self):
11211132
index = MultiIndex(levels=[Index(lrange(4)), Index(lrange(4)), Index(
11221133
lrange(4))], labels=[np.array([0, 0, 1, 2, 2, 2, 3, 3]), np.array(

pandas/tests/indexing/test_multiindex.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -413,9 +413,10 @@ def f():
413413
df.loc[idx[:, :, 'Stock'], 'price'] *= 2
414414
tm.assert_frame_equal(df, expected)
415415

416-
def test_getitem_multiindex(self):
416+
def test_getitem_duplicates_multiindex(self):
417417
# GH 5725 the 'A' happens to be a valid Timestamp so the doesn't raise
418418
# the appropriate error, only in PY3 of course!
419+
419420
index = MultiIndex(levels=[['D', 'B', 'C'],
420421
[0, 26, 27, 37, 57, 67, 75, 82]],
421422
labels=[[0, 0, 0, 1, 2, 2, 2, 2, 2, 2],

0 commit comments

Comments
 (0)