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

如何在Pandas DataFrame中将时间列转换为左开右闭的起止时间列

解决方案

你这个需求可以直接用Pandas的分组位移函数shift()实现,核心逻辑是按ID分组后取每个ID的上一行时间作为start值,首个记录的start直接用当前时间填充即可。

完整实现代码如下:

import pandas as pd

# 构造示例DataFrame,也可以读取你的现有数据
df = pd.DataFrame({
    'id': [1,2,3,4,2,3,1,4,1,2,1,2,3,4],
    'time': [0,0,0,0,1,1,2,2,3,3,4,4,4,4]
})

# 核心计算逻辑
# 按id分组取上一行的time值,首行空值用当前time填充作为start列
df['start'] = df.groupby('id')['time'].shift(1).fillna(df['time']).astype(int)
# stop列直接复用原time列
df['stop'] = df['time']

# 按输出要求调整列顺序
df = df[['id', 'start', 'stop']]
print(df)

运行后输出的结果和你给出的预期格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:36:04