Skip to content

Commit 748c5e0

Browse files
committed
BUG: Bug in setitem with a single item, and a multi-index and integer indicies (GH7190)
1 parent 655a242 commit 748c5e0

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

doc/source/release.rst

+1
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,7 @@ Bug Fixes
533533
- Bug in ``query``/``eval`` where global constants were not looked up correctly
534534
(:issue:`7178`)
535535
- Bug in recognizing out-of-bounds positional list indexers with ``iloc`` and a multi-axis tuple indexer (:issue:`7189`)
536+
- Bug in setitem with a single value, multi-index and integer indices (:issue:`7190`)
536537

537538
pandas 0.13.1
538539
-------------

pandas/core/indexing.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -333,11 +333,7 @@ def _setitem_with_indexer(self, indexer, value):
333333
obj = self.obj[item]
334334
index = obj.index
335335
idx = indexer[:info_axis][0]
336-
try:
337-
if idx in index:
338-
idx = index.get_loc(idx)
339-
except:
340-
pass
336+
341337
plane_indexer = tuple([idx]) + indexer[info_axis + 1:]
342338
lplane_indexer = _length_of_indexer(plane_indexer[0], index)
343339

pandas/tests/test_indexing.py

+11
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,17 @@ def test_loc_setitem(self):
607607
expected = DataFrame({'a' : [0.5,-0.5,-1.5], 'b' : [0,1,2] })
608608
assert_frame_equal(df,expected)
609609

610+
def test_loc_setitem_multiindex(self):
611+
612+
# GH7190
613+
index = pd.MultiIndex.from_product([np.arange(0,100), np.arange(0, 80)], names=['time', 'firm'])
614+
df = DataFrame(np.nan,columns=['A', 'w', 'l', 'a', 'x', 'X', 'd', 'profit'], index=index)
615+
t, n = 0, 2
616+
617+
df.loc[(t,n),'X'] = 0
618+
result = df.loc[(t,n),'X']
619+
self.assertEqual(result, 0)
620+
610621
def test_loc_setitem_dups(self):
611622

612623
# GH 6541

0 commit comments

Comments
 (0)