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
相关产品推荐
相关产品推荐

