Python迭代拉取多公司股票数据单行返回与缺省值处理问题
股票数据拉取问题解决方案
问题原因说明
- 仅返回1条数据:原循环每次执行都会覆盖
df变量,之前拉取的结果没有保存,最终仅保留最后一次接口调用的返回值。 - 程序报错中断:接口没有对应日期数据时会抛出
ValueError,未做异常捕获会直接终止程序。
实现代码
import pandas as pd import pandas_datareader.data as pdr # 配置参数 sym_list = ['20MICRONS.NS', '21STCENMGM.NS', '3IINFOTECH.NS', '3MINDIA.NS', '3PLAND.NS'] target_start = "2021-6-2" target_end = "2021-6-3" res_buffer = [] for sym in sym_list: try: # 拉取指定日期行情 single_data = pdr.get_data_yahoo(sym, start=target_start, end=target_end) # 追加股票代码标识 single_data['symbol'] = sym res_buffer.append(single_data) except ValueError as err: # 匹配无数据异常,填充空行 if "No data found, symbol may be delisted" in str(err): empty_data = pd.DataFrame( data = [[pd.NA]*6 + [sym]], columns = ["High", "Low", "Open", "Close", "Volume", "Adj Close", "symbol"], index = [pd.to_datetime(target_start)] ) res_buffer.append(empty_data) # 非预期异常继续抛出 else: raise err # 合并所有行得到最终结果 final_df = pd.concat(res_buffer, axis=0)
效果说明
执行后final_df会包含5条对应股票的行情数据,无数据的标的对应字段自动填充空值,程序不会中断运行。
内容的提问来源于stack exchange,提问作者Nithin Reddy
相关产品推荐
相关产品推荐

