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

如何合并不同粒度的时间序列DataFrame?每日与分钟级数据整合

合并时间序列DataFrame的解决方案

步骤说明

要实现将日度记录的df1与分钟级记录的df2合并,且保持value1和value2在两次记录间隔内不变,可使用Pandas的merge_asof方法,这是处理这类时间序列不等连接的高效方案。

具体代码

  1. 转换时间列为datetime类型
    首先确保两个DataFrame的timestamp列是Pandas可识别的时间格式:
import pandas as pd

# 转换时间列
df1['timestamp'] = pd.to_datetime(df1['timestamp'])
df2['timestamp'] = pd.to_datetime(df2['timestamp'])
  1. 执行时间序列合并
    使用merge_asof将df2的每个时间点匹配到df1中最近的、不晚于该时间的记录,自动实现间隔内值的延续:
# 按时间合并,direction='backward'表示匹配最近的前序记录
combined_df = pd.merge_asof(
    df2.sort_values('timestamp'),
    df1.sort_values('timestamp'),
    on='timestamp',
    direction='backward'
)

# 调整列顺序与期望结果一致
combined_df = combined_df[['value1', 'value2', 'value3', 'timestamp']]

原理说明

  • merge_asof会对两个已排序的时间序列进行逐行匹配,direction='backward'确保每个df2的时间点都能找到df1中最接近且不超过它的记录,完美满足"间隔内保持上一次记录值"的需求。
  • 如果df2中存在早于df1最早记录的时间点,对应value1和value2会显示为NaN,可根据需求用combined_df[['value1', 'value2']] = combined_df[['value1', 'value2']].fillna(method='bfill')或指定值填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:15:38