如何在按日期与类别分组的pandas DataFrame中计算分类累计求和
实现方法
你可以直接用pandas的groupby搭配cumsum方法完成需求,操作步骤如下:
- 第一步:先保证数据按「分类列」「日期列」升序排序,避免累计顺序出错
示例代码(请替换成你实际的列名):# 假设你的DataFrame命名为df,分类列名为category,日期列名为date df = df.sort_values(by=['category', 'date'], ascending=[True, True]).reset_index(drop=True) - 第二步:按分类分组后对目标列做累计求和
示例代码(请替换成你实际的列名,这里假设要累计的原始值列是cost,累计结果列命名为cumulative_cost):df['cumulative_cost'] = df.groupby('category')['cost'].cumsum()
效果验证
用你举的例子测试,原始数据:
| category | date | cost |
|---|---|---|
| 苹果 | 2021-05-26 | 5 |
| 苹果 | 2021-05-27 | 6 |
| 苹果 | 2021-05-28 | 3 |
| 香蕉 | 2021-05-26 | 2 |
| 香蕉 | 2021-05-27 | 4 |
运行代码后得到的累计结果:
| category | date | cost | cumulative_cost |
|---|---|---|---|
| 苹果 | 2021-05-26 | 5 | 5 |
| 苹果 | 2021-05-27 | 6 | 11 |
| 苹果 | 2021-05-28 | 3 | 14 |
| 香蕉 | 2021-05-26 | 2 | 2 |
| 香蕉 | 2021-05-27 | 4 | 6 |
完全符合分分类逐日累计的需求。
内容的提问来源于stack exchange,提问作者Amna Yasin
相关产品推荐
相关产品推荐

