Skip to content

Commit eea5f10

Browse files
Preserve column ordering in DataFrame.stack (#14626)
This PR preserves original column ordering in DataFrame.stack On pandas_2.0_feature_branch: = 328 failed, 101111 passed, 2091 skipped, 954 xfailed, 312 xpassed in 1113.40s (0:18:33) = This PR: = 316 failed, 101123 passed, 2091 skipped, 954 xfailed, 312 xpassed in 1123.65s (0:18:43) =
1 parent d7dc16e commit eea5f10

File tree

1 file changed

+15
-7
lines changed

1 file changed

+15
-7
lines changed

python/cudf/cudf/core/dataframe.py

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6749,11 +6749,11 @@ def stack(self, level=-1, dropna=True):
67496749
cat 1.0 2.0
67506750
dog 3.0 4.0
67516751
>>> df_multi_level_cols2.stack()
6752-
height weight
6753-
cat kg <NA> 1.0
6754-
m 2.0 <NA>
6755-
dog kg <NA> 3.0
6756-
m 4.0 <NA>
6752+
weight height
6753+
cat kg 1.0 <NA>
6754+
m <NA> 2.0
6755+
dog kg 3.0 <NA>
6756+
m <NA> 4.0
67576757
67586758
**Prescribing the level(s) to be stacked**
67596759
@@ -6925,10 +6925,18 @@ def unnamed_group_generator():
69256925
else:
69266926
if unnamed_level_values.nlevels == 1:
69276927
unnamed_level_values = unnamed_level_values.get_level_values(0)
6928-
unnamed_level_values = unnamed_level_values.unique().sort_values()
6928+
unnamed_level_values = unnamed_level_values.unique()
69296929

69306930
data = ColumnAccessor(
6931-
dict(zip(unnamed_level_values, stacked)),
6931+
dict(
6932+
zip(
6933+
unnamed_level_values,
6934+
[
6935+
stacked[i]
6936+
for i in unnamed_level_values.argsort().argsort()
6937+
],
6938+
)
6939+
),
69326940
isinstance(unnamed_level_values, pd.MultiIndex),
69336941
unnamed_level_values.names,
69346942
)

0 commit comments

Comments
 (0)