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

如何在Pandas DataFrame每行上下插入值为原值±1的新行

操作方案

你需要先把时间格式的字符串转为可运算的时间类型,再对每行做扩容处理,ffill是缺失值向前填充函数,和你需要的行扩容+值变换场景不匹配,所以无法实现需求。

具体实现代码

import pandas as pd

# 示例原始DataFrame,time列为你提到的%H:%S格式字符串
df = pd.DataFrame({
    "time": ["00:03", "00:05", "01:20"]
})

# 1. 转换时间列为timedelta类型,支持秒级加减
# 如果你的时间格式包含其他维度,可调整为pd.to_datetime并指定format参数
df["time"] = pd.to_timedelta("00:" + df["time"])

# 2. 对每行生成 减1秒、原值、加1秒 三个值,再展开为多行
df = df.assign(
    time = df["time"].apply(lambda x: [
        x - pd.Timedelta(seconds=1),
        x,
        x + pd.Timedelta(seconds=1)
    ])
).explode("time")

# 3. 可选:把时间列转回你需要的字符串格式
df["time"] = df["time"].dt.components.apply(
    lambda x: f"{x.hours:02d}:{x.seconds:02d}", axis=1
)

# 4. 重置索引得到最终结果
df = df.reset_index(drop=True)

运行后每行会自动扩展为三行,上下两行分别对应原行时间减1秒、加1秒,和你需要的效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 12:09:03