Skip to content

Commit cb41651

Browse files
authored
CLN: use ._data less in reshape (#33159)
1 parent 4d0eef6 commit cb41651

File tree

2 files changed

+24
-21
lines changed

2 files changed

+24
-21
lines changed

pandas/core/reshape/concat.py

+13-11
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ def __init__(
395395
# Need to flip BlockManager axis in the DataFrame special case
396396
self._is_frame = isinstance(sample, ABCDataFrame)
397397
if self._is_frame:
398-
axis = 1 if axis == 0 else 0
398+
axis = DataFrame._get_block_manager_axis(axis)
399399

400400
self._is_series = isinstance(sample, ABCSeries)
401401
if not 0 <= axis <= sample.ndim:
@@ -436,7 +436,8 @@ def __init__(
436436
self.objs.append(obj)
437437

438438
# note: this is the BlockManager axis (since DataFrame is transposed)
439-
self.axis = axis
439+
self.bm_axis = axis
440+
self.axis = 1 - self.bm_axis if self._is_frame else 0
440441
self.keys = keys
441442
self.names = names or getattr(keys, "names", None)
442443
self.levels = levels
@@ -454,7 +455,7 @@ def get_result(self):
454455
if self._is_series:
455456

456457
# stack blocks
457-
if self.axis == 0:
458+
if self.bm_axis == 0:
458459
name = com.consensus_name_attr(self.objs)
459460

460461
mgr = self.objs[0]._data.concat(
@@ -477,21 +478,22 @@ def get_result(self):
477478
else:
478479
mgrs_indexers = []
479480
for obj in self.objs:
480-
mgr = obj._data
481481
indexers = {}
482482
for ax, new_labels in enumerate(self.new_axes):
483-
if ax == self.axis:
483+
# ::-1 to convert BlockManager ax to DataFrame ax
484+
if ax == self.bm_axis:
484485
# Suppress reindexing on concat axis
485486
continue
486487

487-
obj_labels = mgr.axes[ax]
488+
# 1-ax to convert BlockManager axis to DataFrame axis
489+
obj_labels = obj.axes[1 - ax]
488490
if not new_labels.equals(obj_labels):
489491
indexers[ax] = obj_labels.reindex(new_labels)[1]
490492

491493
mgrs_indexers.append((obj._data, indexers))
492494

493495
new_data = concatenate_block_managers(
494-
mgrs_indexers, self.new_axes, concat_axis=self.axis, copy=self.copy
496+
mgrs_indexers, self.new_axes, concat_axis=self.bm_axis, copy=self.copy
495497
)
496498
if not self.copy:
497499
new_data._consolidate_inplace()
@@ -500,15 +502,15 @@ def get_result(self):
500502
return cons(new_data).__finalize__(self, method="concat")
501503

502504
def _get_result_dim(self) -> int:
503-
if self._is_series and self.axis == 1:
505+
if self._is_series and self.bm_axis == 1:
504506
return 2
505507
else:
506508
return self.objs[0].ndim
507509

508510
def _get_new_axes(self) -> List[Index]:
509511
ndim = self._get_result_dim()
510512
return [
511-
self._get_concat_axis() if i == self.axis else self._get_comb_axis(i)
513+
self._get_concat_axis() if i == self.bm_axis else self._get_comb_axis(i)
512514
for i in range(ndim)
513515
]
514516

@@ -527,7 +529,7 @@ def _get_concat_axis(self) -> Index:
527529
Return index to be used along concatenation axis.
528530
"""
529531
if self._is_series:
530-
if self.axis == 0:
532+
if self.bm_axis == 0:
531533
indexes = [x.index for x in self.objs]
532534
elif self.ignore_index:
533535
idx = ibase.default_index(len(self.objs))
@@ -555,7 +557,7 @@ def _get_concat_axis(self) -> Index:
555557
else:
556558
return ensure_index(self.keys).set_names(self.names)
557559
else:
558-
indexes = [x._data.axes[self.axis] for x in self.objs]
560+
indexes = [x.axes[self.axis] for x in self.objs]
559561

560562
if self.ignore_index:
561563
idx = ibase.default_index(sum(len(i) for i in indexes))

pandas/core/reshape/merge.py

+11-10
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,11 @@ def __init__(
596596
self.left = self.orig_left = _left
597597
self.right = self.orig_right = _right
598598
self.how = how
599-
self.axis = axis
599+
600+
# bm_axis -> the axis on the BlockManager
601+
self.bm_axis = axis
602+
# axis --> the axis on the Series/DataFrame
603+
self.axis = 1 - axis if self.left.ndim == 2 else 0
600604

601605
self.on = com.maybe_make_list(on)
602606
self.left_on = com.maybe_make_list(left_on)
@@ -664,18 +668,17 @@ def get_result(self):
664668

665669
join_index, left_indexer, right_indexer = self._get_join_info()
666670

667-
ldata, rdata = self.left._data, self.right._data
668671
lsuf, rsuf = self.suffixes
669672

670673
llabels, rlabels = _items_overlap_with_suffix(
671-
ldata.items, lsuf, rdata.items, rsuf
674+
self.left._info_axis, lsuf, self.right._info_axis, rsuf
672675
)
673676

674677
lindexers = {1: left_indexer} if left_indexer is not None else {}
675678
rindexers = {1: right_indexer} if right_indexer is not None else {}
676679

677680
result_data = concatenate_block_managers(
678-
[(ldata, lindexers), (rdata, rindexers)],
681+
[(self.left._data, lindexers), (self.right._data, rindexers)],
679682
axes=[llabels.append(rlabels), join_index],
680683
concat_axis=0,
681684
copy=self.copy,
@@ -864,8 +867,8 @@ def _get_join_indexers(self):
864867
)
865868

866869
def _get_join_info(self):
867-
left_ax = self.left._data.axes[self.axis]
868-
right_ax = self.right._data.axes[self.axis]
870+
left_ax = self.left.axes[self.axis]
871+
right_ax = self.right.axes[self.axis]
869872

870873
if self.left_index and self.right_index and self.how != "asof":
871874
join_index, left_indexer, right_indexer = left_ax.join(
@@ -1478,12 +1481,10 @@ def __init__(
14781481
def get_result(self):
14791482
join_index, left_indexer, right_indexer = self._get_join_info()
14801483

1481-
# this is a bit kludgy
1482-
ldata, rdata = self.left._data, self.right._data
14831484
lsuf, rsuf = self.suffixes
14841485

14851486
llabels, rlabels = _items_overlap_with_suffix(
1486-
ldata.items, lsuf, rdata.items, rsuf
1487+
self.left._info_axis, lsuf, self.right._info_axis, rsuf
14871488
)
14881489

14891490
if self.fill_method == "ffill":
@@ -1497,7 +1498,7 @@ def get_result(self):
14971498
rindexers = {1: right_join_indexer} if right_join_indexer is not None else {}
14981499

14991500
result_data = concatenate_block_managers(
1500-
[(ldata, lindexers), (rdata, rindexers)],
1501+
[(self.left._data, lindexers), (self.right._data, rindexers)],
15011502
axes=[llabels.append(rlabels), join_index],
15021503
concat_axis=0,
15031504
copy=self.copy,

0 commit comments

Comments
 (0)