From 8c84311b768d0da62f00537bb7b59807ed13d576 Mon Sep 17 00:00:00 2001 From: phofl Date: Thu, 19 Nov 2020 21:04:28 +0100 Subject: [PATCH 1/2] Implement review comments --- pandas/core/indexing.py | 3 ++- pandas/tests/indexing/test_iloc.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 9bfbc22b1e628..aed896ec418db 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -1821,7 +1821,7 @@ def _setitem_single_block(self, indexer, value, name: str): return indexer = maybe_convert_ix(*indexer) - if isinstance(value, ABCSeries) and name != "iloc" or isinstance(value, dict): + if (isinstance(value, ABCSeries) and name != "iloc") or isinstance(value, dict): # TODO(EA): ExtensionBlock.setitem this causes issues with # setting for extensionarrays that store dicts. Need to decide # if it's worth supporting that. @@ -1859,6 +1859,7 @@ def _setitem_with_indexer_missing(self, indexer, value): if index.is_unique: new_indexer = index.get_indexer([new_index[-1]]) if (new_indexer != -1).any(): + # We get only in this method with loc, so can hard code return self._setitem_with_indexer(new_indexer, value, "loc") # this preserves dtype of the value diff --git a/pandas/tests/indexing/test_iloc.py b/pandas/tests/indexing/test_iloc.py index 84073bbb023a8..60de95ba8aa64 100644 --- a/pandas/tests/indexing/test_iloc.py +++ b/pandas/tests/indexing/test_iloc.py @@ -1000,7 +1000,7 @@ def test_iloc_getitem_nonunique(self): ser = Series([0, 1, 2], index=[0, 1, 0]) assert ser.iloc[2] == 2 - def test_setitem_iloc_pure_position_based(self): + def test_iloc_setitem_pure_position_based(self): # GH#22046 ser1 = Series([1, 2, 3]) ser2 = Series([4, 5, 6], index=[1, 0, 2]) From c084942c0a39965b0547712f2e35693b730e24ab Mon Sep 17 00:00:00 2001 From: phofl Date: Thu, 19 Nov 2020 21:19:40 +0100 Subject: [PATCH 2/2] Change test names --- pandas/core/indexing.py | 2 +- pandas/tests/indexing/test_iloc.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index aed896ec418db..3ef4666402d9a 100644 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -1859,7 +1859,7 @@ def _setitem_with_indexer_missing(self, indexer, value): if index.is_unique: new_indexer = index.get_indexer([new_index[-1]]) if (new_indexer != -1).any(): - # We get only in this method with loc, so can hard code + # We get only here with loc, so can hard code return self._setitem_with_indexer(new_indexer, value, "loc") # this preserves dtype of the value diff --git a/pandas/tests/indexing/test_iloc.py b/pandas/tests/indexing/test_iloc.py index 60de95ba8aa64..bc40079e3169b 100644 --- a/pandas/tests/indexing/test_iloc.py +++ b/pandas/tests/indexing/test_iloc.py @@ -818,7 +818,7 @@ def test_iloc_setitem_bool_indexer(self, klass): tm.assert_frame_equal(df, expected) @pytest.mark.parametrize("indexer", [[1], slice(1, 2)]) - def test_setitem_iloc_pure_position_based(self, indexer): + def test_iloc_setitem_pure_position_based(self, indexer): # GH#22046 df1 = DataFrame({"a2": [11, 12, 13], "b2": [14, 15, 16]}) df2 = DataFrame({"a": [1, 2, 3], "b": [4, 5, 6], "c": [7, 8, 9]}) @@ -826,7 +826,7 @@ def test_setitem_iloc_pure_position_based(self, indexer): expected = DataFrame({"a": [1, 2, 3], "b": [11, 12, 13], "c": [7, 8, 9]}) tm.assert_frame_equal(df2, expected) - def test_setitem_iloc_dictionary_value(self): + def test_iloc_setitem_dictionary_value(self): # GH#37728 df = DataFrame({"x": [1, 2], "y": [2, 2]}) rhs = dict(x=9, y=99)