Skip to content

Commit 45cf34d

Browse files
committed
fixup! Move .unstack() logic onto BlockManager and Block
1 parent e5a6ce9 commit 45cf34d

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

pandas/core/categorical.py

+2
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ def maybe_to_categorical(array):
127127
""" coerce to a categorical if a series is given """
128128
if isinstance(array, (ABCSeries, ABCCategoricalIndex)):
129129
return array._values
130+
elif isinstance(array, np.ndarray):
131+
return Categorical(array)
130132
return array
131133

132134

pandas/core/internals.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -4082,20 +4082,19 @@ def unstack(self, unstacker):
40824082
new_columns = dummy.get_new_columns()
40834083
new_index = dummy.get_new_index()
40844084
new_blocks = []
4085-
mask_blocks = np.zeros_like(new_columns, dtype=bool)
4085+
mask_columns = np.zeros_like(new_columns, dtype=bool)
40864086

40874087
for blk in self.blocks:
40884088
bunstacker = unstacker(
40894089
blk.values.T, value_columns=self.items[blk.mgr_locs.indexer])
40904090
new_items = bunstacker.get_new_columns()
40914091
new_values, mask = bunstacker.get_new_values()
40924092
new_placement = new_columns.get_indexer(new_items)
4093-
mask_blocks[new_placement] = mask.any(0)
4093+
mask_columns[new_placement] = mask.any(0)
40944094
new_blocks.extend(blk._unstack(new_values.T, new_placement))
40954095

4096-
new_blocks = [b for b, keep in zip(new_blocks, mask_blocks) if keep]
4097-
new_axes = [new_columns[mask_blocks], new_index]
4098-
bm = BlockManager(new_blocks, new_axes)
4096+
bm = BlockManager(new_blocks, [new_columns, new_index])
4097+
bm = bm.take(mask_columns.nonzero()[0], axis=0)
40994098
return bm
41004099

41014100

0 commit comments

Comments
 (0)