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

Pandas Series时间序列带容差调整频率并保留原始日期的实现方法

实现方案

你之前使用的reindex方法会直接将索引替换为规整的14天间隔日期,自然会丢失原始日期信息,改用merge_asof做时间近邻匹配即可实现需求,完整实现步骤如下:

第一步:数据预处理

先把日期字段转为datetime格式并排序

import pandas as pd
import datetime

# 请将下方变量名替换为你自己的原始数据变量
df['Date'] = pd.to_datetime(df['Date'])
df = df.set_index('Date').sort_index()

第二步:执行近邻匹配

# 生成14天间隔的参考时间点,覆盖全周期
target_dates = pd.date_range(start=df.index.min(), end=df.index.max() + pd.Timedelta(days=14), freq='14D')
target_df = pd.DataFrame({'target_date': target_dates})
df_reset = df.reset_index()

# 按最近时间匹配,时间差容忍值为3天,和你原有逻辑一致
matched = pd.merge_asof(
    target_df, 
    df_reset, 
    left_on='target_date', 
    right_on='Date', 
    direction='nearest', 
    tolerance=pd.Timedelta(days=3)
)

第三步:处理输出结果

# 匹配到的条目保留原始日期,未匹配到的用参考日期填充
matched['Date'] = matched['Date'].fillna(matched['target_date'])
# 保留所需字段、剔除同日期同值重复条目、按日期排序
result = matched[['Date', 'Value']].drop_duplicates(subset=['Date', 'Value'], keep='first').sort_values('Date').reset_index(drop=True)

运行后输出的result就和你期望的结果完全一致。如果需要调整时间容忍度、匹配方向,修改对应参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:06:04