diff --git a/pandas/core/indexing.py b/pandas/core/indexing.py index 0c6aaf4b46d6a..9571e3a92983b 100755 --- a/pandas/core/indexing.py +++ b/pandas/core/indexing.py @@ -176,7 +176,7 @@ def _get_setitem_indexer(self, key): pass if isinstance(key, range): - return self._convert_range(key, is_setter=True) + return self._convert_range(key) try: return self._convert_to_indexer(key, is_setter=True) @@ -256,7 +256,7 @@ def _convert_tuple(self, key, is_setter=False): keyidx.append(idx) return tuple(keyidx) - def _convert_range(self, key, is_setter=False): + def _convert_range(self, key): """ convert a range argument """ return list(key) @@ -475,6 +475,9 @@ def _setitem_with_indexer(self, indexer, value): if isinstance(value, ABCSeries): value = self._align_series(indexer, value) + if is_scalar(value): + value = [value] + info_idx = indexer[info_axis] if is_integer(info_idx): info_idx = [info_idx] diff --git a/pandas/tests/indexing/test_loc.py b/pandas/tests/indexing/test_loc.py index df0180c7a5bf7..3041891fb81a8 100644 --- a/pandas/tests/indexing/test_loc.py +++ b/pandas/tests/indexing/test_loc.py @@ -653,6 +653,19 @@ def test_loc_non_unique(self): index=[1, 1, 2]) tm.assert_frame_equal(result, expected) + def test_loc_int_type(self): + df = DataFrame([list('abc')]) + df.loc[:, 'col'] = int(5) + expected = DataFrame([['a', 'b', 'c', 5]], columns=[0, 1, 2, 'col']) + tm.assert_frame_equal(df, expected) + + def test_loc_int_mutli_rows(self): + df = DataFrame([list('abc'), list('edf')]) + df.loc[:, 'col'] = int(5) + expected = DataFrame([['a', 'b', 'c', 5], ['e', 'd', 'f', 5]], + columns=[0, 1, 2, 'col']) + tm.assert_frame_equal(df, expected) + def test_loc_non_unique_memory_error(self): # GH 4280