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

按Id分组上移time_spent_in_sec列并填充每组末行值为0

解决方案

你需要按Id分组后对time_spent_in_sec执行向下偏移(shift(-1)),再将每组最后一行产生的NaN填充为0即可,具体代码如下:

完整代码示例

import pandas as pd

# 构造原始DataFrame
data = {
    'Id': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'],
    'event': ['in', 'step_1', 'step_2', 'done', 'in', 'step_1', 'step_2', 'step_3', 'done'],
    'time_spent_in_sec': [0, 2.2, 3, 3, 0, 5, 8, 15, 7]
}
df = pd.DataFrame(data)

# 核心操作:分组偏移+填充0
df['time_spent_in_sec'] = df.groupby('Id')['time_spent_in_sec'].shift(-1).fillna(0)

print(df)

代码说明

  1. 分组偏移:groupby('Id')['time_spent_in_sec'].shift(-1)会对每个Id组内的time_spent_in_sec列执行向下偏移,即把下一行的值移到当前行,每组最后一行因为没有下一行,会生成NaN。
  2. 填充0:fillna(0)将所有NaN替换为0,正好满足每组最后一行设为0的需求。

运行后输出的结果与你预期的DataFrame完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:20:51