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

如何用Pandas将含速度与时长的DataFrame转为1秒间隔时间序列?

高效转换时长-速度数据为1秒间隔时间序列

放弃低效的逐行迭代,用pandas的向量化操作和repeat方法批量处理,能大幅提升处理速度,具体实现如下:

完整实现代码

import pandas as pd

# 假设这是你从Excel导入的原始DataFrame
df = pd.DataFrame({
    'speed': [5, 6, 4],
    'time': [0.75, 3.12, 0.75]
})

# 1. 把分钟时长转成总秒数(四舍五入取整,按需调整)
df['total_seconds'] = (df['time'] * 60).round().astype(int)

# 2. 按秒数批量重复对应speed值
speed_repeated = df['speed'].repeat(df['total_seconds'])

# 3. 生成从0开始的连续1秒间隔时间戳,格式化为HH:MM:SS
total_total_sec = df['total_seconds'].sum()
timestamps = pd.to_timedelta(range(total_total_sec), unit='s').strftime('%H:%M:%S')

# 4. 组合成最终的时间序列DataFrame
final_df = pd.DataFrame({
    'timestamp': timestamps,
    'speed': speed_repeated.reset_index(drop=True)
})

# 查看结果
print(final_df.head())

关键步骤说明

  • 时长转秒数:把time列的分钟单位转成秒,确保每个speed对应的持续秒数是整数,方便后续重复操作。如果你的数据里时长都是精确到秒的小数(比如0.75分钟=45秒),可以直接用(df['time']*60).astype(int)避免四舍五入。
  • 批量重复speed:用repeat方法一次性生成所有秒对应的speed值,这是pandas底层优化的操作,比Python循环快得多。
  • 生成时间戳:用pd.to_timedelta生成连续的时间间隔,再格式化为你需要的HH:MM:SS格式,全程无需手动计算每个时间点。

效率优势

这种方法完全基于pandas的向量化运算,底层用C实现,处理大数量级数据时,速度会比逐行迭代快几十甚至上百倍,不会出现卡顿或耗时过长的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 16:39:51