yfinance无法获取请求的完整股票数据范围问题求助
解决yfinance返回天数少于请求天数的问题
这是正常现象——股票市场只在交易日产生行情数据,周末、法定节假日休市时不会有新数据。通常一年的交易日约250天,10年累计约2500天,和你拿到的251、2516天完全匹配。
如果需要包含所有日历天(包括休市日)的数据,需要手动填充缺失日期的内容,以下是基于你代码的修改方案:
import yfinance as yf import pandas as pd msft = yf.Ticker("T") # 获取原始交易日数据 hist = msft.history(period="1y") # 生成请求周期内的完整日历天索引 full_date_range = pd.date_range(start=hist.index[0], end=hist.index[-1], freq='D') # 将原始数据对齐到完整日历天,用前一天的有效值填充休市日数据 hist_full = hist.reindex(full_date_range).fillna(method='ffill') historical_market_data = [] days = 0 # 遍历填充后的完整数据集 for idx, row in hist_full.iterrows(): days += 1 historical_market_data.append([row['High'], row['Low'], row['Open'], row['Close'], days]) # 输出结果 for i in historical_market_data: print(f"High: {i[0]}, Low: {i[1]}, Open: {i[2]}, Close: {i[3]}, Day: {i[4]}")
关键步骤说明:
pd.date_range:生成从数据起始日到结束日的所有日历天,freq='D'指定按天生成reindex:将原始数据的索引替换为完整日历天,休市日的行自动填充为NaNfillna(method='ffill'):用前一个交易日的数据填充休市日(符合“休市时价格不变”的逻辑),你也可以根据需求调整:bfill:用下一个交易日的数据填充- 移除
fillna调用:保留NaN值,后续自行处理缺失数据
内容的提问来源于stack exchange,提问作者Argetlam
相关产品推荐
相关产品推荐

