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

如何在DataFrame中计算时间戳的微秒累计求和值?

如何在DataFrame中计算时间戳的微秒累计求和值?

看起来你需要在指定的行区间内,计算时间戳的相邻差值累计和,并且只在A=1.0开始到B=1.0的区间内生效。下面是基于pandas的完整解决方案,完全匹配你的需求:

步骤1:加载数据并转换时间格式

首先把输入数据转为DataFrame,同时将time列转换成支持微秒精度的datetime类型,这是后续计算的基础:

import pandas as pd
import numpy as np

# 输入数据整理
data = {
    'time': ['2018-04-04 00:01:52.474', '2018-04-04 00:01:52.676', '2018-04-04 00:01:52.692',
             '2018-04-04 00:01:52.754', '2018-04-04 00:01:52.817', '2018-04-04 00:01:52.848',
             '2018-04-04 00:01:52.895', '2018-04-04 00:01:53.051', '2018-04-04 00:01:53.082',
             '2018-04-04 00:01:53.160', '2018-04-04 00:01:53.316', '2018-04-04 00:01:53.332'],
    'A': [0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
    'B': [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0]
}

df = pd.DataFrame(data)

# 转换为带微秒的datetime类型,确保精度
df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%d %H:%M:%S.%f')

步骤2:计算相邻行的时间差

先算出每行与前一行的时间差,单位为秒(保留微秒级精度):

# 计算时间差,转换为秒数
df['time_diff'] = df['time'].diff().dt.total_seconds()

步骤3:确定累计求和的有效区间

根据你的需求,我们只在第一个A=1.0的行到第一个B=1.0的行这个区间内计算累计和:

# 找到累计起始点:第一个A=1.0的行索引
start_idx = df[df['A'] == 1.0].index[0]

# 找到累计结束点:第一个B=1.0的行索引
end_idx = df[df['B'] == 1.0].index[0]

# 创建掩码,标记哪些行需要计算累计
mask = (df.index >= start_idx) & (df.index <= end_idx)

步骤4:计算时间差的累计和

在有效区间内计算时间差的累计和,并将起始行的累计值设为0.0,同时保留三位小数匹配你的输出格式:

# 仅在掩码范围内计算累计和
df['cumsum_Time'] = np.where(
    mask,
    # 从起始行的下一行开始累加,再对齐整个DataFrame的索引
    df['time_diff'].iloc[start_idx+1:end_idx+1].cumsum().reindex(df.index),
    np.nan
)

# 起始行的累计值设为0.0
df.loc[start_idx, 'cumsum_Time'] = 0.0

# 保留三位小数,和你的期望输出一致
df['cumsum_Time'] = df['cumsum_Time'].round(3)

步骤5:添加额外标记(匹配你的变更输出)

如果需要添加区间标记和注释,可以执行以下代码:

# 添加区间标记列
df['interval'] = np.where(mask, 1, np.nan)

# 添加自定义注释
df.loc[start_idx, 'note'] = 'this1'
df.loc[end_idx, 'note'] = 'this2'

最终结果

运行后得到的核心结果如下,完全匹配你的变更输出要求:

timeABtime_diffcumsum_Timeintervalnote
2018-04-04 00:01:52.4740000.00.0NaNNaNNaNNaN
2018-04-04 00:01:52.6760000.00.00.202NaNNaNNaN
2018-04-04 00:01:52.6920000.00.00.016NaNNaNNaN
2018-04-04 00:01:52.7540001.00.00.0620.01.0this1
2018-04-04 00:01:52.8170001.00.00.0630.0631.0NaN
2018-04-04 00:01:52.8480001.00.00.0310.0941.0NaN
2018-04-04 00:01:52.8950001.00.00.0470.1411.0NaN
2018-04-04 00:01:53.0510001.00.00.1560.2971.0NaN
2018-04-04 00:01:53.0820001.00.00.0310.3281.0NaN
2018-04-04 00:01:53.1600001.00.00.0780.4061.0NaN
2018-04-04 00:01:53.3160001.01.00.1560.5621.0this2
2018-04-04 00:01:53.3320001.01.00.016NaNNaNNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:07:42