Python yfinance多交易所基金数据:日期索引统一需求
问题
使用Python的yfinance库获取多只来自不同交易所(如.L、.SW)的ETF数据,设置的起止日期为:
start = '2002-01-01' end = '2022-06-30'
拉取数据的代码如下:
assets = ['GOVT', 'IDNA.L', 'IMEU.L', 'EMMUSA.SW', 'EEM', 'IJPD.L', 'VCIT', 'LQD', 'JNK', 'JNKE.L', 'IEF', 'IEI', 'SHY', 'TLH', 'IGIB', 'IHYG.L', 'TIP', 'TLT'] assets.sort() data = yf.download(assets, start = start, end = end)
目前返回数据的索引为日期+时间格式,单只工具无单日重复价格,需要将索引统一为纯日期格式,实现同日期各工具价格横向对齐。
解决方案
直接对返回数据的索引进行日期格式化处理即可,有两种常用方式:
- 将索引转换为日期对象(非DatetimeIndex类型)
import pandas as pd import yfinance as yf # 原拉取代码 start = '2002-01-01' end = '2022-06-30' assets = ['GOVT', 'IDNA.L', 'IMEU.L', 'EMMUSA.SW', 'EEM', 'IJPD.L', 'VCIT', 'LQD', 'JNK', 'JNKE.L', 'IEF', 'IEI', 'SHY', 'TLH', 'IGIB', 'IHYG.L', 'TIP', 'TLT'] assets.sort() data = yf.download(assets, start=start, end=end) # 转换索引为纯日期 data.index = data.index.date
- 保留DatetimeIndex类型但仅保留日期部分(推荐,后续时间序列操作更方便)
# 转换索引为仅含日期的DatetimeIndex data.index = pd.to_datetime(data.index).floor('D')
处理后,所有ETF的价格数据会按自然日横向对齐,不同交易所的时区差异会被统一到日期维度,满足需求。
内容的提问来源于stack exchange,提问作者bebongtheshark
相关产品推荐
相关产品推荐

