我的数据帧是这样的:

import pandas as pd
import numpy as np

date_rng = pd.date_range(start="2023-11-18", periods=3, freq="10S")
values = [4, 2, 3]
df = pd.DataFrame(data={"values": values}, index=date_rng)
df["dt"] = df.index.to_series().diff().dt.seconds
df["dt"] = df.index.to_series().diff(periods=2).dt.seconds
df["dt_neg"] = df.index.to_series().diff(periods=-1).dt.seconds
print(df)

赠送

                     values    dt   dt_neg
2023-11-18 00:00:00       4   NaN  86390.0
2023-11-18 00:00:10       2   NaN  86390.0
2023-11-18 00:00:20       3  20.0      NaN

负面价值观难道不应该也奏效吗?

我读了答案herehere.

推荐答案

seconds返回与小时/分钟无关的秒数.您需要使用total_seconds:

df["dt_neg"] = df.index.to_series().diff(periods=-1).dt.total_seconds()

输出:

                     values    dt  dt_neg
2023-11-18 00:00:00       4   NaN   -10.0
2023-11-18 00:00:10       2   NaN   -10.0
2023-11-18 00:00:20       3  20.0     NaN

事实上,负时间增量有一种特殊的格式:

df.index.to_series().diff(periods=-1)

2023-11-18 00:00:00   -1 days +23:59:50
2023-11-18 00:00:10   -1 days +23:59:50
2023-11-18 00:00:20                 NaT
Freq: 10S, dtype: timedelta64[ns]

Python相关问答推荐

连接两个具有不同标题的收件箱

Matlab中是否有Python的f-字符串等效物

发生异常:TclMessage命令名称无效.!listbox"

log 1 p numpy的意外行为

数据抓取失败:寻求帮助

Telethon加入私有频道

try 将一行连接到Tensorflow中的矩阵

使用NeuralProphet绘制置信区间时出错

转换为浮点,pandas字符串列,混合千和十进制分隔符

如何在图中标记平均点?

无论输入分辨率如何,稳定扩散管道始终输出512 * 512张图像

AES—256—CBC加密在Python和PHP中返回不同的结果,HELPPP

具有相同图例 colored颜色 和标签的堆叠子图

无法在Spyder上的Pandas中将本地CSV转换为数据帧

Python将一个列值分割成多个列,并保持其余列相同

如何在验证文本列表时使正则表达式无序?

Pandas在rame中在组内洗牌行,保持相对组的顺序不变,

为罕见情况下的回退None值键入

用0填充没有覆盖范围的垃圾箱

从列表中分离数据的最佳方式