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

如何在Pandas中按分组获取N天后的实际股票价格

如何用Pandas获取每条股票记录N天后的实际价格?

核心思路

要实现这个需求,关键是基于日期精准匹配(避免因节假日、缺失数据用行偏移导致的误差),通过日期运算+表连接的方式完成匹配。

具体实现代码

假设你的DataFrame名为df,目标天数N=30:

  1. 转换日期格式:先把字符串类型的date列转为Pandas datetime类型,才能进行日期运算
import pandas as pd

# 转换日期列(匹配你的数据格式:日/月/年)
df['date'] = pd.to_datetime(df['date'], format='%d/%m/%y')
  1. 计算目标日期:为每条记录生成N天后的目标日期
N = 30
df['target_date'] = df['date'] + pd.Timedelta(days=N)
  1. 合并匹配未来价格:将原DataFrame与自身按ticker和target_date左连接,获取对应日期的价格
# 准备用于匹配的辅助数据集:保留关键列并重命名
price_lookup = df[['ticker', 'date', 'price']].rename(
    columns={'date': 'target_date', 'price': 'future_price'}
)

# 左连接保留所有原始记录,N天后无数据则显示NaN
result = df.merge(price_lookup, on=['ticker', 'target_date'], how='left')

可选简化方案(仅适用于日期连续场景)

如果你的股票数据是每日连续无缺失的(每个交易日都有记录),可以用groupby+shift快速实现:

# 先按股票代码和日期排序
df = df.sort_values(['ticker', 'date'])
# 按股票分组后,取30行后的价格(对应N天后的记录)
df['future_price'] = df.groupby('ticker')['price'].shift(-N)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 11:17:12