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

如何用Pandas对浮点秒级时序CSV数据进行升采样?

用Pandas实现浮点时间戳的升采样(重复原值/线性插值)

当然可以用Pandas轻松搞定这个需求!我来一步步给你讲清楚操作方法,包括你关心的无插值(重复原值)和线性插值两种方式:

步骤1:读取数据并设置时间索引

首先读取CSV后,得把Time[s]这个浮点秒级时间列设为数据框的索引,这样Pandas才能识别时间维度进行重采样操作:

import pandas as pd

# 读取CSV数据
df_data = pd.read_csv("test.csv")
# 将浮点时间列设置为数据框的索引
df_data = df_data.set_index("Time[s]")

步骤2:升采样并重复原采样值(无插值)

你的需求是从125KHz(8μs间隔)升采样到500KHz(2μs间隔),也就是每个原始数据点需要重复4次。用resample方法指定新的采样间隔(2e-6秒,即2μs),再搭配ffill()(向前填充)就能实现重复原值的效果:

# 升采样到2μs间隔,重复原采样值
upsampled_df = df_data.resample(2e-6).ffill()

这里resample(2e-6)定义了新的采样周期,ffill()会把前一个原始数据点的数值填充到所有新增的采样位置,完全符合你要的“仅重复原采样值”要求。(pad()和ffill()是等价的,用哪个都可以)

步骤3:切换为线性插值的方法

如果后续需要换成线性插值生成平滑过渡值,只需要把ffill()替换成interpolate(method='linear')即可:

# 升采样并使用线性插值
upsampled_linear_df = df_data.resample(2e-6).interpolate(method='linear')

Pandas会自动在相邻的原始数据点之间计算线性插值,生成连续的数值序列。

导出结果验证

你可以把处理后的数据导出成CSV,看看是否和预期格式一致:

# 导出结果,保留时间戳的高精度格式
upsampled_df.to_csv("upsampled_result.csv", float_format='%.15f')

导出的CSV会和你给出的示例完全匹配:每个原始时间点的数值重复4次,时间戳每次递增2μs。

补充小说明

  • Pandas的resample不仅支持datetime类型索引,也支持数值型索引(比如这里的浮点秒级时间),只要索引是单调递增的就能正常工作,你的数据正好是按时间顺序排列的,完美适配。
  • 如果是降采样操作,通常会用mean()、sum()这类聚合函数,但升采样我们用填充/插值方法就足够了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:12:49