Skip to content

Commit bb4cc53

Browse files
committed
changes according to comments
1 parent 8ed1091 commit bb4cc53

File tree

2 files changed

+8
-15
lines changed

2 files changed

+8
-15
lines changed

pandas/core/arrays/masked.py

+7-14
Original file line numberDiff line numberDiff line change
@@ -1426,28 +1426,21 @@ def _groupby_op(
14261426
return self._maybe_mask_result(res_values, result_mask)
14271427

14281428

1429-
def transpose_homogenous_masked_arrays(masked_arrays):
1429+
def transpose_homogenous_masked_arrays(masked_arrays) -> list[BaseMaskedArray]:
14301430
"""Transpose masked arrays in a list, but faster.
14311431
14321432
Input should be a list of 1-dim masked arrays of equal length and all have the
14331433
same dtype. The caller is responsible for ensuring validity of input data.
14341434
"""
1435-
transposed_shape = len(masked_arrays), len(masked_arrays[0])
1436-
values = [arr._data for arr in masked_arrays]
1437-
transposed_values = np.empty(transposed_shape, dtype=values[0].dtype)
1438-
for i, val in enumerate(values):
1439-
transposed_values[i, :] = val
1440-
transposed_values = transposed_values.copy(order="F")
1441-
1442-
masks = [arr._mask for arr in masked_arrays]
1443-
transposed_masks = np.empty(transposed_shape, dtype=masks[0].dtype)
1444-
for i, mask in enumerate(masks):
1445-
transposed_masks[i, :] = mask
1446-
transposed_masks = transposed_masks.copy(order="F")
1435+
values = [arr._data.reshape(1, -1) for arr in masked_arrays]
1436+
transposed_values = np.concatenate(values, axis=0)
1437+
1438+
masks = [arr._mask.reshape(1, -1) for arr in masked_arrays]
1439+
transposed_masks = np.concatenate(masks, axis=0)
14471440

14481441
dtype = masked_arrays[0].dtype
14491442
arr_type = dtype.construct_array_type()
1450-
transposed_arrays = []
1443+
transposed_arrays: list[BaseMaskedArray] = []
14511444
for i in range(transposed_values.shape[1]):
14521445
transposed_arr = arr_type(transposed_values[:, i], mask=transposed_masks[:, i])
14531446
transposed_arrays.append(transposed_arr)

pandas/core/frame.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3601,7 +3601,7 @@ def transpose(self, *args, copy: bool = False) -> DataFrame:
36013601
if isinstance(self._mgr, ArrayManager):
36023602
masked_arrays = self._mgr.arrays
36033603
else:
3604-
masked_arrays = [blk.values for blk in self._mgr.blocks]
3604+
masked_arrays = [*self._iter_column_arrays()]
36053605
new_values = transpose_homogenous_masked_arrays(masked_arrays)
36063606
else:
36073607
# We have other EAs with the same dtype. We preserve dtype in transpose.

0 commit comments

Comments
 (0)