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

R语言时间序列数据如何按7天间隔筛选指定日期

时间序列DataFrame按7天间隔采样处理方案

首先先确保你的DataFrame中Date列已转换为datetime格式,否则无法进行时间维度的计算:

import pandas as pd

# 日期格式转换
df['Date'] = pd.to_datetime(df['Date'])

方案1:以首条日期为基准间隔7天采样

完全匹配你给出的期望输出逻辑,从第一条日期开始计数,每间隔7天保留一条数据:

# 取第一条数据的日期为起始基准
start_date = df['Date'].iloc[0]
# 筛选和起始日天数差为7的倍数的行
df_filtered = df[((df['Date'] - start_date).dt.days % 7 == 0)].reset_index(drop=True)

该方案的特点是完全跟随你数据集的第一条日期对齐,不会出现周偏移问题。如果间隔7天的对应日期在原数据中不存在,会自动跳过该行。

方案2:按自然周固定周期采样

如果你需要和自然周对齐(比如固定每周二取数),可以用pandas的resample方法实现:

# 将Date列设为索引
df = df.set_index('Date')
# 按每周二采样,W-MON对应每周一、W-WED对应每周三,可按需调整
df_resampled = df.resample('W-TUE').first().reset_index()

补充:无数据日期也保留行的实现

如果7天间隔的对应日期哪怕原数据中没有,也需要保留日期行、其余字段留空,可以先生成完整的目标日期序列再和原表匹配:

# 生成从起始日到最大日期、间隔7天的完整日期序列
target_dates = pd.date_range(start=start_date, end=df['Date'].max(), freq='7D')
# 左匹配原表得到结果
df_resampled = pd.DataFrame({'Date': target_dates}).merge(df, on='Date', how='left')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:15:02