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

如何展平Pandas DataFrame的列层级?解决agg生成的嵌套列问题

Pandas聚合后嵌套列展平解决方法

你用groupby+agg()生成嵌套多级列后,手动指定列名没生效,核心问题是列名顺序和实际列的顺序不匹配,下面给两种靠谱的解决方法:

方法一:自动拼接多级列(推荐)

不用手动列所有参数和统计量,直接遍历列索引,把多级元组拼接成字符串:

# 遍历列索引,非元组的分组列保持原样,多级列拼接成param_metric格式
data.columns = ['_'.join(col) if isinstance(col, tuple) else col for col in data.columns]

方法二:手动指定列名(需保证顺序一致)

如果你一定要手动定义列名,要调整列表推导式的循环顺序——先遍历参数(soil_moisture、temperature),再遍历统计量(mean、std等),这样生成的列名顺序才和agg()输出的列顺序匹配:

flat_cols = ['plant_id', 'plant_name', 'scientific_name'] + [
    f"{param}_{metric}" 
    for param in ['soil_moisture', 'temperature']
    for metric in ["mean", "std", "min", "max"]
]
data.columns = flat_cols

为什么原来的代码没生效?

你之前的列表推导式是先遍历统计量再遍历参数,生成的列名顺序是soil_moisture_mean、temperature_mean、soil_moisture_std... 但agg()实际输出的列顺序是每个参数先遍历所有统计量(比如soil_moisture_mean、soil_moisture_std、soil_moisture_min... 然后才是temperature相关的),顺序不匹配导致列名对应错误,看起来像没生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:12:54