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

使用pandas将25Hz时序数据下采样到10Hz的索引选择及重采样方法咨询

问题1解答

你提到的pandas.TimedeltaIndex.seconds是TimedeltaIndex的属性,用来提取时间差的整秒数值,不是可用的索引对象。
你的场景是相对秒数的时序数据,直接使用pandas.TimedeltaIndex作为索引即可:把现有的time_in_seconds浮点数列转换为以秒为单位的时间差类型,作为DataFrame的索引就可以满足重采样要求。

问题2解答

重采样到10Hz等价于每100毫秒输出一个样本,你可以按以下步骤操作,同时得到时间和数值两列结果:

  • 第一步:将时间列转为TimedeltaIndex并设置为数据集索引
  • 第二步:按10Hz的窗口执行重采样,对data_vals使用你需要的聚合规则(下采样常用均值、首样本、中位数等,示例中用均值聚合,可按需替换)
  • 第三步:将重采样后的TimedeltaIndex转换回浮点型的秒数,作为新的time_in_seconds列

完整可运行代码示例:

import pandas as pd

# 假设你已经把样例数据读取为df,列名为time_in_seconds、data_vals
# 构造Timedelta索引
df.index = pd.to_timedelta(df['time_in_seconds'], unit='s')

# 10Hz对应采样间隔100ms,写'resample(100ms)'和'resample(10Hz)'效果等价
# 这里用mean取窗口均值,可替换为first()/median()等符合你业务需求的聚合逻辑
resampled_df = df.resample('10Hz')['data_vals'].mean().reset_index()

# 把Timedelta索引转回秒数的浮点值
resampled_df['time_in_seconds'] = resampled_df['index'] / pd.Timedelta(seconds=1)
# 删掉多余的临时索引列
resampled_df = resampled_df.drop(columns=['index'])

如果需要保留原始时间戳而非窗口均值对应的时间,把聚合规则换成.first()即可直接取每个窗口第一个样本的时间和数值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:36:01