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

使用groupby().agg()后如何重命名DataFrame的列名?

解决Pandas多级列名重命名问题

你的问题出在:rename里用了字符串形式的元组(比如"('name_d', '')")作为匹配键,但DataFrame的列名实际是元组对象,不是字符串,所以完全匹配不上,导致重命名失效。

下面是三种可行的解决方法:

方法一:直接替换列名列表

既然你已经明确列的顺序,直接给columns赋值新的列名列表最直接:

bilateral.columns = ['name_d', 'year', 'regime_origin', 'FLOW', 'GDP_d']

方法二:用元组作为rename的匹配键

把原来的字符串键换成真实的元组对象,就能精准匹配到对应的多级列:

bilateral.rename(columns={
    ('name_d', ''): 'name_d',
    ('year', ''): 'year',
    ('regime_origin', ''): 'regime_origin',
    ('FLOW', 'sum'): 'FLOW',
    ('GDP_d', 'min'): 'GDP_d'
}, inplace=True)

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

在agg阶段就直接定义好最终列名,从根源避免生成多级列,更高效:

bilateral = bilateral.groupby(["name_d", "year", "regime_origin"]).agg(
    FLOW=("FLOW", "sum"),
    GDP_d=("GDP_d", "min")
).reset_index()

这样执行后得到的DataFrame列名就是普通的单级列,无需后续重命名操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:45:42