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

基于Python将累计时长转换为含厘秒的时间格式问题求助

为无时间字段的数据包添加累计时间列解决方案

需求说明

分析一组无时间字段的数据包数据,需新增三列时间相关字段:

  • Duration_Hz:累计的0.01秒单位数(每个数据包对应1个单位)
  • Duration_Second:累计秒数(单位:秒)
  • Duration:含厘秒的累计时间格式(如00:00:00:00,格式为时:分:秒:厘秒)

核心逻辑:每个数据包对应0.01秒(即1厘秒),需基于数据包编号计算累计时间并格式化。

原始数据示例

PacketValue
1960.631
1970.742
......

之前尝试的核心代码

# 获取首尾数据包编号
firstMoment_fps = df_all_data.head(1)['PacketCounter'].values[0]
lastMoment_fps = df_all_data.tail(1)['PacketCounter'].values[0]
nr_intervals_needed = abs((firstMoment_fps - lastMoment_fps)//100)
# 计算区间起始点
interval = 0
intervals = []
start = firstMoment_fps
while start < lastMoment_fps:
    nextMoment = start + 100
    if nextMoment < lastMoment_fps:
        start = nextMoment
        interval = interval + 1
        intervals.append(start)
    else:
        break

正确实现方案

利用Pandas的向量运算即可高效完成,无需复杂循环:

import pandas as pd

# 假设数据已加载到df中,以下为示例数据
data = {'Packet': [196, 197, 198, 200], 'Value': [0.631, 0.742, 0.853, 0.964]}
df = pd.DataFrame(data)

# 1. 计算当前数据包与第一个数据包的偏移量(直接对应累计厘秒数)
df['offset'] = df['Packet'] - df['Packet'].iloc[0]

# 2. 生成Duration_Hz:累计0.01秒单位数(从1开始计数)
df['Duration_Hz'] = df['offset'] + 1

# 3. 生成Duration_Second:累计秒数
df['Duration_Second'] = df['Duration_Hz'] * 0.01

# 4. 格式化生成Duration列(时:分:秒:厘秒)
def format_centiseconds(total_cs):
    hours = total_cs // 360000  # 1小时=360000厘秒
    remaining = total_cs % 360000
    minutes = remaining // 6000  # 1分钟=6000厘秒
    remaining %= 6000
    seconds = remaining // 100  # 1秒=100厘秒
    centiseconds = remaining % 100
    return f"{hours:02d}:{minutes:02d}:{seconds:02d}:{centiseconds:02d}"

df['Duration'] = df['offset'].apply(format_centiseconds)

# 查看最终结果
print(df[['Packet', 'Value', 'Duration_Hz', 'Duration_Second', 'Duration']])

代码说明

  • offset:计算每个数据包相对于第一个包的编号差值,直接得到累计的厘秒数(每个包对应1厘秒)
  • Duration_Hz:以第一个数据包为1,累计计数0.01秒的单位数量
  • Duration_Second:通过单位数乘以0.01直接得到累计秒数
  • format_centiseconds:将累计厘秒数转换为指定的时间格式,用02d确保每个部分都是两位数字

输出示例

PacketValueDuration_HzDuration_SecondDuration
1960.63110.0100:00:00:00
1970.74220.0200:00:00:01
1980.85330.0300:00:00:02
2000.96450.0500:00:00:04

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:45:36