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

使用Pandas与Python3获取特定时间点列值及捐赠数据处理

嘿,看来你已经在Pandas的探索之路上走了一段啦!针对你提到的需求——给存储玩家统计的DataFrame新增一列,记录每周重置(周日午夜)后到对应时间点的donations最大值,我来给你一步步拆解实现方案:

核心思路先明确

因为donations是周日午夜重置、整周持续增长,所以关键是要把数据按「周日起始的周」来分组,再基于分组计算最大值。


步骤1:给每条数据打上「所属重置周」的标记

首先得给每条数据关联到它所在周的周日零点(也就是donations重置的时间),这样才能准确按重置周期分组。假设你的DataFrame有一个时间戳列(比如叫timestamp),可以这么做:

import pandas as pd

# 计算每条数据对应的周日零点(重置时间)
df['week_reset_time'] = df['timestamp'] - pd.to_timedelta(df['timestamp'].dt.weekday + 1, unit='D')

解释下:dt.weekday返回0(周一)到6(周日),weekday +1的数值就是当前日期距离上一个周日的天数,减去这个时间差后,week_reset_time就会精准指向该数据所在周的周日零点,也就是donations重置的起始时间。

步骤2:按重置周计算目标最大值

接下来分两种常见场景实现,看你具体需要哪种:

情况1:截至当前时间点的累积最大值

如果要的是从周日重置后,到当前这条数据的时间点为止,donations的历史最高值,用cummax()(累积最大值)就能完美实现:

df['weekly_cumulative_max'] = df.groupby('week_reset_time')['donations'].cummax()

这样每一行的weekly_cumulative_max,就是从本周日重置后到该记录时间点,donations的最高值,完全贴合你说的“整周持续增长”的场景。

情况2:当前重置周内的全局最大值

如果要的是当前这条数据所在的整周里,donations的绝对峰值(不管时间先后,只要是本周内的所有记录),用transform('max')来生成即可:

df['weekly_global_max'] = df.groupby('week_reset_time')['donations'].transform('max')

额外补充:结合你已有的每日最大值

如果你已经按年中日(dayofyear)算出了每日donations最大值(比如列名叫daily_max_donations),想再得到每周内的每日最大值累积情况,也可以套用同样的分组逻辑:

df['weekly_daily_max_cum'] = df.groupby('week_reset_time')['daily_max_donations'].cummax()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:18:29