pandas基于playerId与datetime列的条件累计分组求和问题
实现方法
你可以分两步完成累计和计算:
- 先按
playerId和dateutc分组,统计单个玩家当日所有goal、shot、header字段的总和 - 对第一步得到的每日聚合结果,按
playerId分组后对三个指标字段做升序累计求和即可
import pandas as pd # 假设df为你的原始DataFrame,先确保dateutc为datetime类型 df['dateutc'] = pd.to_datetime(df['dateutc']) # 第一步:按玩家+日期聚合当日各指标总和,同时按日期升序排序保证累计顺序正确 daily_agg = df.groupby(['playerId', 'dateutc'], as_index=False)[['goal', 'shot', 'header']].sum() daily_agg = daily_agg.sort_values(['playerId', 'dateutc']) # 第二步:按玩家分组,对三个指标做累计求和 daily_agg[['goal', 'shot', 'header']] = daily_agg.groupby('playerId')[['goal', 'shot', 'header']].cumsum() # daily_agg即为最终结果,和你期望的输出结构完全一致 print(daily_agg)
如果你的原始数据已经保证同一个playerId+dateutc组合只有一条记录,可以跳过第一步的分组求和步骤,直接排序后做累计计算即可。
内容的提问来源于stack exchange,提问作者nicklasc93
相关产品推荐
相关产品推荐

