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

Pandas:保留name索引时如何按date聚合cost列?

解决方案

你可以通过以下两种方式实现需求,既保留date和name作为多层索引,又让cost列仅按date层级求和:

方法1:先聚合再合并

  1. 先单独计算每个日期的总费用:
date_cost_total = df1.groupby('date')['cost'].sum().reset_index(name='cost')
  1. 将聚合结果与原表合并,确保每个date下的所有name都能拿到对应日期的总费用:
df_merged = pd.merge(df1[['date', 'name']], date_cost_total, on='date', how='left')
  1. 设置多层索引得到目标格式:
df_desired = df_merged.set_index(['date', 'name'])

方法2:用transform直接生成汇总列

这种方式更简洁,通过groupby.transform直接在原表中生成每个日期的总费用列,再设置索引:

df1['cost'] = df1.groupby('date')['cost'].transform('sum')
df_desired = df1.set_index(['date', 'name'])

两种方法最终生成的df_desired都会保留date和name的多层索引结构,且cost列的值是对应日期的总费用,不会按name拆分聚合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:00:58