You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用groupby和mean时如何保持DataFrame列顺序不变?

使用groupby和mean时保持原DataFrame列顺序的方法

问题场景

使用groupby结合mean聚合时,结果的Series索引(对应原DataFrame的列)会被自动排序,无法匹配原DataFrame的列顺序。

示例代码

import pandas as pd
df = pd.DataFrame({'f':[[1,2,30],[4,2,7]],'o':[[1,4,5],[7,1,3]],'e':[[6,7,4],[4,5,7]]})

当前代码与输出

执行以下代码:

df.stack().str[1].groupby(level=1).mean()

得到排序后的输出:

e    6
f    2
o    2.5
dtype: float64

期望输出

保持原DataFrame的列顺序f→o→e:

f    2
o    2.5
e    6
dtype: float64

解决方案

方法1:groupby时设置sort=False

groupby默认参数sort=True会对分组键排序,设置为sort=False后,分组将按照分组键首次出现的顺序聚合,而stack操作中列名的首次出现顺序与原DataFrame完全一致:

df.stack().str[1].groupby(level=1, sort=False).mean()

方法2:用原DataFrame列名重新索引结果

如果已经得到聚合结果,可通过reindex方法传入原DataFrame的列名,强制恢复原始列顺序:

result = df.stack().str[1].groupby(level=1).mean()
result = result.reindex(df.columns)

内容的提问来源于stack exchange,提问作者user15649753

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:15:21