如何对DataFrame按交易ID与连续日号序列分组计算预测值的cumulative sum
解决方案
首先构造示例DataFrame:
import pandas as pd data = { "transaction ID(交易ID)": [12,12,12,12,13,13,13,13], "day number(日号)": [1,2,1,2,1,2,3,4], "Predicted value(预测值)": [0.001,0.002,0.001,0.002,0.001,0.002,0.002,0.003] } df = pd.DataFrame(data)
接下来生成分组标识:
- 按交易ID分组后,判断当前行的日号是否为1,若是则标记为新组起点
- 对每个交易ID内的标记进行累加,得到唯一的分组ID
# 生成分组键:同一交易ID下,日号为1时触发新分组 df['group_id'] = df.groupby('transaction ID(交易ID)')['day number(日号)'].apply( lambda x: (x == 1).cumsum() )
最后按交易ID和group_id分组,对预测值求和:
result = df.groupby(['transaction ID(交易ID)', 'group_id'])['Predicted value(预测值)'].sum().tolist() print(result) # 输出: [0.003, 0.003, 0.008]
说明
- 核心逻辑是通过
(x == 1).cumsum()在每个交易ID内部生成递增的分组标识,把从1开始的连续日号序列归为一组 - 分组后直接求和就能得到每组的累计总和,完全匹配需求结果
内容的提问来源于stack exchange,提问作者rushi
相关产品推荐
相关产品推荐

