Snowflake中每4行计算分段累计求和的实现方法
按每4行重置的累计求和实现方法
假设你用Python的pandas处理数据,下面是快速实现的方案:
首先构造示例数据:
import pandas as pd import numpy as np # 匹配你给出的示例数据 data = {'NMV': [1,2,3,4,5,6,7]} df = pd.DataFrame(data)
生成每4行一组的分组键,再对每组做累计求和:
# 按行序号每4行划分为一组,组内计算累计求和 df['cumsum'] = df.groupby(np.arange(len(df)) // 4)['NMV'].cumsum()
运行后得到的结果:
NMV cumsum 0 1 1 1 2 3 2 3 6 3 4 10 4 5 5 5 6 11 6 7 18
逻辑说明
np.arange(len(df))生成从0开始的连续行序号,// 4会把序号0-3归为组0、4-7归为组1,以此类推,精准实现每4行一个分组的规则。- 通过
groupby按分组键分组后,对每组的NMV列调用cumsum(),就能在每组内完成累计求和,组与组之间自动重置计算。
如果你的数据索引不是从0开始的连续值,用np.arange(len(df))生成分组键更稳妥,确保严格按行的顺序每4行分组。
内容的提问来源于stack exchange,提问作者Ismail Awad
相关产品推荐
相关产品推荐

