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

基于日期列在Pandas中创建30天滞后列的实现方法

实现步骤

1. 确保日期列格式正确

首先需要将PredictionDate列转换为datetime类型,这样才能进行日期运算:

import pandas as pd

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

2. 创建日期-数值映射参考表

由于数据中存在重复日期(同一日期对应多行相同数值),先提取唯一日期及其对应的FRM值,作为后续查找的参考:

# 提取唯一日期及对应FRM值,以日期为索引
unique_dates = df.drop_duplicates(subset='PredictionDate').set_index('PredictionDate')
ref_30yr = unique_dates['U.S. 30 yr FRM']
ref_15yr = unique_dates['U.S. 15 yr FRM']

3. 计算每行的30天前日期并映射对应数值

为每行计算目标日期的30天前日期,再通过映射获取该日期对应的FRM值:

# 计算30天前的日期
df['lag_date'] = df['PredictionDate'] - pd.Timedelta(days=30)

# 映射得到30天前的FRM值,不存在则为NaN
df['30yrLag'] = df['lag_date'].map(ref_30yr)
df['15yrLag'] = df['lag_date'].map(ref_15yr)

4. 处理缺失值(可选)

如果需要将缺失值替换为.(如示例所示),执行以下步骤:

# 将NaN替换为'.'
df['30yrLag'] = df['30yrLag'].fillna('.')
df['15yrLag'] = df['15yrLag'].fillna('.')

# 删除临时的lag_date列(按需选择)
df = df.drop(columns=['lag_date'])

最终效果

运行上述代码后,你的DataFrame会新增30yrLag和15yrLag两列,对应每行日期往前30天的FRM数据,缺失日期则显示.。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:18:27