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

如何用Pandas为DataFrame中下半场开始后的赛事时长加45分钟?

实现方法

核心思路

不用复杂的索引处理,利用Pandas的groupby+transform生成掩码快速定位需调整时间的行,结合时间类型运算完成修改。

步骤与代码

  1. 转换时间格式:先把字符串类型的playtime转为Pandas的timedelta类型,才能进行时间加减:
import pandas as pd

# 假设数据已加载为DataFrame df
df['playtime'] = pd.to_timedelta(df['playtime'])
  1. 生成调整掩码:按game分组,标记每组中“start of second half”事件之后的所有行(注意匹配原始数据里的单引号):
# 生成掩码:True表示需要加45分钟的行
mask = df.groupby('game')['event'].transform(
    lambda x: x.eq("'start of second half'").cumsum() > 0
)

逻辑说明:每组内找到目标事件的位置,用cumsum()让该事件及之后的行累计值大于0,生成布尔掩码。

  1. 调整时间并转回字符串格式:对掩码为True的行添加45分钟,再转回原始的HH:MM:SS字符串格式:
# 给目标行加45分钟
df.loc[mask, 'playtime'] += pd.Timedelta(minutes=45)

# 转回字符串格式(去掉timedelta可能带的days前缀)
df['playtime'] = df['playtime'].astype(str).str[-8:]

最终效果

处理后的数据如下:

playtimeeventgame
000:10:34'red card for player 10'game_id_0123
100:45:00'start of second half'game_id_0123
200:55:00'goal for team blue'game_id_0123

内容的提问来源于stack exchange,提问作者call me Steve

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:01:08