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

如何去除Pandas DataFrame groupby+agg后的Val子列,简化列结构

解决Pandas GroupBy聚合后多级列的问题

你可以通过两种方式实现需求:直接在聚合时避免生成多级列,或者对已生成的多级列进行扁平化处理。

方法一:聚合时直接指定列名(推荐)

在agg方法中使用元组格式定义新列名,同时设置as_index=False让Class成为普通列,一步到位得到目标结构:

import pandas as pd

df = pd.DataFrame({
    'Class': ['A', 'B', 'A', 'B', 'C'],
    'Val': [25, 30, 35, 40, 15],
})

# 直接生成单级列的结果
grouped = df.groupby('Class', as_index=False).agg(mean=('Val', 'mean'), count=('Val', 'count'))
print(grouped)

输出结果:

Class   mean  count
0     A  30.00      2
1     B  35.00      2
2     C  15.00      1

方法二:扁平化已生成的多级列

如果已经执行了原代码生成了多级列,可以通过修改列名并重置索引来转换结构:

# 原代码生成多级列
grouped = df.groupby(by='Class').agg({'Val': ['mean', 'count']})

# 提取第二级列名作为新的列名
grouped.columns = grouped.columns.get_level_values(1)
# 将Class从索引转为普通列
grouped = grouped.reset_index()

print(grouped)

输出结果与方法一一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:56:10