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

Pandas中使用groupby()分组时如何保留col列且不改变其值?

问题与解决方案

数据集示例

country_oregime_ocountry_dregime_dtrade_otrade_dcol
Italy1Turkey0123123149293940

现有代码

gravity3 = gravity2.groupby(["country_d", "year", "regime_o"]).agg({"tradeflow_imf_d":"sum"})

需求

在分组结果中保留col列,且对于给定的year和country_d,该列返回单一值,不改变原有数值。

修改后的代码

可以在agg方法中为col指定一个能返回单一值的聚合函数(比如first、last,只要分组内col值唯一,这些函数都能保留原数值):

# 字典格式写法
gravity3 = gravity2.groupby(["country_d", "year", "regime_o"]).agg({
    "tradeflow_imf_d": "sum",
    "col": "first"
})

# 命名聚合写法(可读性更强)
gravity3 = gravity2.groupby(["country_d", "year", "regime_o"]).agg(
    total_trade=("tradeflow_imf_d", "sum"),
    col=("col", "first")
)

说明

因为要求col在指定year和country_d时返回单一值,只要确保每个分组内的col值是唯一的,使用first()、last()、max()或min()这类聚合函数都可以,它们不会改变col的原有数值,只是提取分组内的唯一值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:20:29