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

Pandas DataFrame按ColA分组后计算ColC前两项之和生成新列的简便方法

实现方案

用pandas内置的分组+滚动窗口计算即可,全程是向量化操作,比自行循环效率高几十到上百倍,代码也非常简洁:

完整代码

import pandas as pd

# 第一步:处理日期列+排序,确保分组内日期顺序正确
df['ColB'] = pd.to_datetime(df['ColB'])
df = df.sort_values(by=['ColA', 'ColB']).reset_index(drop=True)

# 第二步:分组计算滚动和后位移1位,得到前N行的和
df['NewCol'] = df.groupby('ColA')['ColC']\
                 .rolling(2, min_periods=1)\
                 .sum()\
                 .reset_index(level=0, drop=True)\
                 .shift(1)

逻辑说明

  • 首先把ColB转为日期类型,避免字符串排序出现日期顺序错误的问题,再按分组列+日期列全局排序,保证每组内的行顺序符合要求
  • 分组后对ColC做滚动窗口计算:窗口大小设为2,min_periods=1表示窗口内数据不足2条时,按现有条数计算和
  • 滚动求和的结果位移1位(shift(1)),就把当前行的滚动和变成了前一行/前两行的和,完全匹配你给出的示例要求
    如果不需要保留日期列的日期类型,计算完成后可以再转回字符串格式:
df['ColB'] = df['ColB'].dt.strftime('%m/%d/%Y')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:06:00