使用Tiingo+pandas_datareader时触发pandas.concat相关FutureWarning问题咨询
关于Tiingo搭配pandas_datareader触发FutureWarning的解答
告警本质
这个FutureWarning是pandas 1.3及以上版本新增的前置兼容性提示,目的是提前告知开发者:未来pandas版本中,pd.concat()方法除第一个参数objs外,其余所有参数都必须使用关键字形式传递。你当前使用的pandas_datareader 0.10.0版本中,tiingo模块的源码直接按位置传递了第二个axis参数,因此触发了该提示。
现有环境风险说明
当前你使用的pandas 1.3.2版本依然兼容位置传参的写法,告警仅为提前提示,不会影响功能运行,你的运行环境不存在功能失效风险。
Python 3.9环境无告警的原因
该现象和Python版本本身无关,大概率是两个原因之一:
- 3.9环境中安装的pandas版本低于1.3,尚未加入该FutureWarning的检测逻辑
- 3.9环境默认配置了告警过滤规则,隐藏了FutureWarning类的提示输出
你可以在3.9环境中执行import pandas; print(pandas.__version__)确认pandas版本,也可以添加import warnings; warnings.filterwarnings("default")后重新运行代码验证是否存在告警。
可行建议
- 若仅想屏蔽该告警不影响其他逻辑,可在代码开头添加如下代码,精准过滤该提示:
import warnings warnings.filterwarnings("ignore", category=FutureWarning, module="pandas_datareader.tiingo")
- 若后续计划升级pandas到2.0及以上版本,可手动修改tiingo.py的第234行,将
pd.concat(dfs, self._concat_axis)调整为pd.concat(dfs, axis=self._concat_axis)即可适配,也可升级pandas_datareader到最新正式版,官方已在后续版本修复了该参数传参问题。 - 若项目需要长期稳定运行,建议锁定依赖版本,通过requirements.txt等方式固定pandas、pandas_datareader等核心库的版本,避免后续自动升级依赖带来的兼容性问题。
内容的提问来源于stack exchange,提问作者yunfei
相关产品推荐
相关产品推荐

