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

如何调整引用的pandas DataFrame时间范围,无需重复新建数据对象?

解决方案

你已经拉取了完整10年的日线数据存储在data对象中,pandas针对DatetimeIndex类型的索引提供了原生的时间范围切片能力,完全不需要重复调用yfinance拉取数据,也不用新建多个冗余的数据对象。

常用截取方法

1. 相对时间快速截取

直接使用pandas内置的last()方法,输入对应时间周期即可截取最近的对应范围数据,写法非常简洁:

# 截取最近3个月数据
data.last('3M')
# 截取最近6个月数据
data.last('6M')
# 截取最近1年数据
data.last('1Y')

对应你要计算最近3个月对数收益率的需求,可以直接链式调用完成,不需要存中间变量:

log_returns = np.log(data.last('3M')/data.last('3M').shift()).dropna()

2. 固定起止时间截取

如果需要自定义具体的起止时间范围,直接用.loc索引切片即可:

# 截取2023年1月1日到2023年6月30日的数据
data.loc['2023-01-01':'2023-06-30']
# 截取2022年全年的数据
data.loc['2022']
# 截取2023年第二季度数据
data.loc['2023-04':'2023-06']

3. 动态时间范围截取

和你之前计算90天时间范围的逻辑对齐的话,可以先计算起始时间再切片:

start_cut = dt.datetime.today() - dt.timedelta(90)
recent_90d_data = data.loc[start_cut:]

注意事项

yfinance返回的行情数据默认索引就是DatetimeIndex格式,不需要你额外做格式转换,上述方法可以直接生效。你全程只需要维护最开始拉取的全量data对象即可,需要任意时间范围直接从该对象截取即可,不会产生冗余变量,也不需要重复请求接口浪费时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:03