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

Pandas按多列分组计算累积和并保留level列的实现方法

pandas分组累积和保留其他列实现方案

列丢失的原因是你直接使用了groupby().cumsum()的返回结果作为输出——这个方法返回的是和原DataFrame索引一一对应的单列Series,仅包含累积和计算结果,自然不会携带level列。只要把计算得到的累积和作为新列追加回原DataFrame,就能保留所有原有字段。

实现代码

import pandas as pd

# 双字段分组,计算upgrade_n的累积和,直接赋值为原df的新列
df["cumulative_sum"] = df.groupby(["player_profile", "category"])["upgrade_n"].cumsum()

# 筛选目标列、调整输出顺序,按需把level转为整数格式
result = df[["player_profile", "category", "cumulative_sum", "level"]].reset_index(drop=True)
result["level"] = result["level"].astype(int)

补充说明

  • 只要groupby操作前没有对原DataFrame做过滤、重设索引的操作,cumsum()返回的Series就会和原表每一行严格对齐,不会出现行错位的问题
  • 你贴出的期望输出里Standard Player分组第一行的level值为13,和原始数据中对应行的18.0存在出入,上述代码会完整保留原始数据的level值,如果需要对分组内的level做重排、重置,可以在分组计算前先按业务规则对DataFrame排序即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:21:22