Skip to content

Commit 7d5fde7

Browse files
committed
Merge pull request #6799 from jreback/iloc_dups_1
BUG: duplicate (getitem) indexing with iloc (GH6766)
2 parents 106bac8 + 35281dc commit 7d5fde7

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

pandas/core/internals.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,8 @@ def setitem(self, indexer, value):
674674
values = self._try_coerce_result(values)
675675
values = self._try_cast_result(values, dtype)
676676
return [make_block(transf(values), self.items, self.ref_items,
677-
ndim=self.ndim, fastpath=True)]
677+
ndim=self.ndim, placement=self._ref_locs,
678+
fastpath=True)]
678679
except (ValueError, TypeError) as detail:
679680
raise
680681
except Exception as detail:
@@ -2902,7 +2903,10 @@ def fast_xs(self, loc, copy=False):
29022903

29032904
# non-unique (GH4726)
29042905
if not items.is_unique:
2905-
return self._interleave(items).ravel(), True
2906+
result = self._interleave(items)
2907+
if self.ndim == 2:
2908+
result = result.T
2909+
return result[loc], True
29062910

29072911
# unique
29082912
dtype = _interleaved_dtype(self.blocks)

pandas/tests/test_indexing.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,19 @@ def test_iloc_getitem_dups(self):
483483
# no dups in panel (bug?)
484484
self.check_result('list int (dups)', 'iloc', [0,1,1,3], 'ix', { 0 : [0,2,2,6], 1 : [0,3,3,9] }, objs = ['series','frame'], typs = ['ints'])
485485

486+
# GH 6766
487+
df1 = DataFrame([{'A':None, 'B':1},{'A':2, 'B':2}])
488+
df2 = DataFrame([{'A':3, 'B':3},{'A':4, 'B':4}])
489+
df = concat([df1, df2], axis=1)
490+
491+
# cross-sectional indexing
492+
result = df.iloc[0,0]
493+
self.assertTrue(isnull(result))
494+
495+
result = df.iloc[0,:]
496+
expected = Series([np.nan,1,3,3],index=['A','B','A','B'])
497+
assert_series_equal(result,expected)
498+
486499
def test_iloc_getitem_array(self):
487500

488501
# array like

0 commit comments

Comments
 (0)