Skip to content

Commit 6efa4c1

Browse files
committed
Merge pull request pandas-dev#6506 from jreback/dup_loc
BUG: Bug in multi-axis indexing using .loc on non-unique indices (GH6504)
2 parents f149927 + 080e461 commit 6efa4c1

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

doc/source/release.rst

+1
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ Bug Fixes
192192
rest of pandas (:issue:`5129`).
193193
- Bug in ``read_html`` tests where redirected invalid URLs would make one test
194194
fail (:issue:`6445`).
195+
- Bug in multi-axis indexing using ``.loc`` on non-unique indices (:issue:`6504`)
195196

196197
pandas 0.13.1
197198
-------------

pandas/core/indexing.py

+2
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,8 @@ def _multi_take_opportunity(self, tup):
710710
return False
711711
elif com._is_bool_indexer(indexer):
712712
return False
713+
elif not ax.is_unique:
714+
return False
713715

714716
return True
715717

pandas/tests/test_indexing.py

+15
Original file line numberDiff line numberDiff line change
@@ -1599,6 +1599,21 @@ def test_dups_fancy_indexing(self):
15991599
result = df.ix[:,['A','B','C']]
16001600
assert_frame_equal(result, expected)
16011601

1602+
# GH 6504, multi-axis indexing
1603+
df = DataFrame(np.random.randn(9,2), index=[1,1,1,2,2,2,3,3,3], columns=['a', 'b'])
1604+
1605+
expected = df.iloc[0:6]
1606+
result = df.loc[[1, 2]]
1607+
assert_frame_equal(result, expected)
1608+
1609+
expected = df
1610+
result = df.loc[:,['a', 'b']]
1611+
assert_frame_equal(result, expected)
1612+
1613+
expected = df.iloc[0:6,:]
1614+
result = df.loc[[1, 2], ['a', 'b']]
1615+
assert_frame_equal(result, expected)
1616+
16021617
def test_indexing_mixed_frame_bug(self):
16031618

16041619
# GH3492

0 commit comments

Comments
 (0)