Skip to content

Commit 1f4c56b

Browse files
authored
REGR: Performance of DataFrame.stack where columns are not a MultiIndex (#58027)
1 parent a5c003d commit 1f4c56b

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

pandas/core/reshape/reshape.py

+12-8
Original file line numberDiff line numberDiff line change
@@ -932,14 +932,18 @@ def stack_v3(frame: DataFrame, level: list[int]) -> Series | DataFrame:
932932
if len(frame.columns) == 1:
933933
data = frame.copy()
934934
else:
935-
# Take the data from frame corresponding to this idx value
936-
if len(level) == 1:
937-
idx = (idx,)
938-
gen = iter(idx)
939-
column_indexer = tuple(
940-
next(gen) if k in set_levels else slice(None)
941-
for k in range(frame.columns.nlevels)
942-
)
935+
if not isinstance(frame.columns, MultiIndex) and not isinstance(idx, tuple):
936+
# GH#57750 - if the frame is an Index with tuples, .loc below will fail
937+
column_indexer = idx
938+
else:
939+
# Take the data from frame corresponding to this idx value
940+
if len(level) == 1:
941+
idx = (idx,)
942+
gen = iter(idx)
943+
column_indexer = tuple(
944+
next(gen) if k in set_levels else slice(None)
945+
for k in range(frame.columns.nlevels)
946+
)
943947
data = frame.loc[:, column_indexer]
944948

945949
if len(level) < frame.columns.nlevels:

0 commit comments

Comments
 (0)