Skip to content

Commit b06f08f

Browse files
MarcoGorelliMarco Gorelli
authored and
Marco Gorelli
committed
fix setting of index
1 parent 922f932 commit b06f08f

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

pandas/core/groupby/generic.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,8 @@ def aggregate(self, func=None, *args, **kwargs):
956956
result = self._aggregate_frame(func)
957957
else:
958958
result.columns = Index(
959-
result.columns.levels[0], name=self._selected_obj.columns.name
959+
[i[:-1] if len(i) > 2 else i[0] for i in result.columns],
960+
name=self._selected_obj.columns.name,
960961
)
961962

962963
if not self.as_index:

pandas/tests/groupby/aggregate/test_aggregate.py

+11
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,17 @@ def test_agg_relabel_multiindex_duplicates():
691691
tm.assert_frame_equal(result, expected)
692692

693693

694+
def test_multiindex_custom_func():
695+
# GH 31777
696+
df = pd.DataFrame(
697+
np.random.rand(10, 4), columns=pd.MultiIndex.from_product([[1, 2], [3, 4]])
698+
)
699+
grp = df.groupby(np.r_[np.ones(5), np.zeros(5)])
700+
result = grp.agg(lambda s: s.mean())
701+
expected = grp.agg("mean")
702+
tm.assert_frame_equal(result, expected)
703+
704+
694705
def myfunc(s):
695706
return np.percentile(s, q=0.90)
696707

0 commit comments

Comments
 (0)