Python的yfinance获取月度数据时出现异常日期与NaN值问题
问题原因与解决方法
这不是你的操作错误,是yfinance库处理月度数据时的常见问题——它的1mo区间数据默认返回每月最后一个交易日的记录,但在部分日期范围下,会混入一些非交易日的无效日期(比如你提到的2020-02-07、2020-05-08),这些日期没有对应交易数据,所以显示为NaN。
解决方法
- 直接清理无效数据:用
dropna()去掉所有NaN值,剩下的就是每个月有效的月度交易数据:data_cleaned = data.dropna() - 统一索引为月初日期:如果需要将索引固定为每月第一天,可以用重采样方法提取每月最后一个有效值:
# MS代表每月第一天作为周期起点,last()取该月最后一个非NaN值 data_resampled = data.resample('MS').last() - 简化复权数据获取:下载时添加
auto_adjust=True参数,无需手动提取Adj Close,代码更简洁:y_params = { 'tickers': 'AAPL', 'start': '2020-01-01', 'end': '2022-11-01', 'interval': '1mo', 'auto_adjust': True } data = yf.download(**y_params)['Close'] # 此处Close已为复权后价格
这类无效日期是yfinance在数据源拼接、日期范围处理时的小bug,清理后完全不影响后续分析使用。
内容的提问来源于stack exchange,提问作者Gcedism
相关产品推荐
相关产品推荐

