From 287b24085a410d49f71b7009161e2651b841ba08 Mon Sep 17 00:00:00 2001 From: Joris Van den Bossche Date: Wed, 7 Aug 2019 15:25:36 +0200 Subject: [PATCH] BUG: fix construction of NonConsolidatableBlock with inconsistent ndim (#27786) --- pandas/core/internals/blocks.py | 2 ++ pandas/tests/extension/base/getitem.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/pandas/core/internals/blocks.py b/pandas/core/internals/blocks.py index 26aca34f20594..33517087c5d76 100644 --- a/pandas/core/internals/blocks.py +++ b/pandas/core/internals/blocks.py @@ -274,6 +274,8 @@ def make_block_same_class(self, values, placement=None, ndim=None, dtype=None): ) if placement is None: placement = self.mgr_locs + if ndim is None: + ndim = self.ndim return make_block( values, placement=placement, ndim=ndim, klass=self.__class__, dtype=dtype ) diff --git a/pandas/tests/extension/base/getitem.py b/pandas/tests/extension/base/getitem.py index e02586eacfea7..d56cc50f4739c 100644 --- a/pandas/tests/extension/base/getitem.py +++ b/pandas/tests/extension/base/getitem.py @@ -260,3 +260,9 @@ def test_reindex_non_na_fill_value(self, data_missing): expected = pd.Series(data_missing._from_sequence([na, valid, valid])) self.assert_series_equal(result, expected) + + def test_loc_len1(self, data): + # see GH-27785 take_nd with indexer of len 1 resulting in wrong ndim + df = pd.DataFrame({"A": data}) + res = df.loc[[0], "A"] + assert res._data._block.ndim == 1