diff --git a/pandas/core/generic.py b/pandas/core/generic.py index 49e992b14293e..bcb46ad6d1873 100644 --- a/pandas/core/generic.py +++ b/pandas/core/generic.py @@ -3751,7 +3751,7 @@ class animal locomotion dtype=new_values.dtype, ) elif is_scalar(loc): - result = self.iloc[:, [loc]] + result = self.iloc[:, slice(loc, loc + 1)] elif axis == 1: result = self.iloc[:, loc] else: diff --git a/pandas/tests/frame/indexing/test_xs.py b/pandas/tests/frame/indexing/test_xs.py index a90141e9fad60..3be3ce15622b4 100644 --- a/pandas/tests/frame/indexing/test_xs.py +++ b/pandas/tests/frame/indexing/test_xs.py @@ -319,3 +319,11 @@ def test_xs_droplevel_false(self): result = df.xs("a", axis=1, drop_level=False) expected = DataFrame({"a": [1]}) tm.assert_frame_equal(result, expected) + + def test_xs_droplevel_false_view(self): + # GH#37832 + df = DataFrame([[1, 2, 3]], columns=Index(["a", "b", "c"])) + result = df.xs("a", axis=1, drop_level=False) + df.values[0, 0] = 2 + expected = DataFrame({"a": [2]}) + tm.assert_frame_equal(result, expected)