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

如何在Pandas中计算奇偶行时间差并保留奇数行ts值?

问题描述

需要计算Pandas数据框中奇数行与对应偶数行的时间差,同时保留奇数行的ts值。现有代码已正确算出时间差delta,但未保留奇数行的ts值。

现有代码

import pandas as pd

data = [
    ['04-21 10:45:21.718'],
    ['04-21 10:45:22.718'],
    ['04-21 10:45:24.718'],
    ['04-21 10:45:28.718'],
    ['04-21 10:45:32.718'],
    ['04-21 10:45:38.718']
    ]

df = pd.DataFrame(data,columns=['ts'])
df['ts'] = pd.to_datetime(df['ts'],format="%m-%d %H:%M:%S.%f")
print(df)

df2 = pd.DataFrame(df['ts'].values[1::2] - df['ts'].values[::2],columns=['delta'])
df2['delta'] = df2['delta'].dt.total_seconds()
print(df2)

当前输出

ts
0 1900-04-21 10:45:21.718
1 1900-04-21 10:45:22.718
2 1900-04-21 10:45:24.718
3 1900-04-21 10:45:28.718
4 1900-04-21 10:45:32.718
5 1900-04-21 10:45:38.718
   delta
0    1.0
1    4.0
2    6.0

期望输出

ts  delta
1 1900-04-21 10:45:22.718    1.0
2 1900-04-21 10:45:28.718    4.0
3 1900-04-21 10:45:38.718    6.0

解决方案

修改代码,在生成结果数据框时同时加入奇数行的ts值,并调整索引匹配期望输出:

import pandas as pd

data = [
    ['04-21 10:45:21.718'],
    ['04-21 10:45:22.718'],
    ['04-21 10:45:24.718'],
    ['04-21 10:45:28.718'],
    ['04-21 10:45:32.718'],
    ['04-21 10:45:38.718']
    ]

df = pd.DataFrame(data,columns=['ts'])
df['ts'] = pd.to_datetime(df['ts'],format="%m-%d %H:%M:%S.%f")
print(df)

# 提取奇数行ts,计算与对应偶数行的时间差
df2 = pd.DataFrame({
    'ts': df['ts'].iloc[1::2].values,
    'delta': (df['ts'].iloc[1::2] - df['ts'].iloc[::2]).dt.total_seconds()
})
# 调整索引从1开始
df2.index = range(1, len(df2)+1)
print(df2)

修改说明

  1. 使用df['ts'].iloc[1::2]直接提取奇数行的ts值,加入结果数据框
  2. 直接在数据框构造时计算时间差并转换为秒数,简化步骤
  3. 通过df2.index = range(1, len(df2)+1)将结果索引调整为从1开始,匹配期望输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:55:11