You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pdblp调用彭博接口遇无效ticker报错 如何跳过错误返回含空值DataFrame

pdblp连接彭博获取参考数据时跳过无效标的配置方法

问题场景

使用pdblp库连接彭博获取参考数据时,传入全有效ticker的代码可正常运行,返回结构化DataFrame结果:

import pdblp

# 建立彭博连接
con = pdblp.BCon()
con.start()

ticker = ['gbpeur curncy', 'usdeur curncy']
# ticker = ['gbpeur curncy', 'usdeur curncy', 'somejunk curncy']   <-- 加入无效标的测试
field = ['Ticker', 'px_last']

df = con.ref(ticker, field)
print(df)

全有效ticker场景下返回结果如下:

ticker    field   value
0  gbpeur curncy   Ticker  GBPEUR
1  gbpeur curncy  px_last  1.1698
2  usdeur curncy   Ticker  USDEUR
3  usdeur curncy  px_last  0.9507

当ticker列表中加入不存在的无效标的(如上注释行的somejunk curncy),接口会直接抛出ValueError: Unknow security 'somejunk curncy',导致整个请求中断,无法返回已查询到的有效标的数据。
需求为:跳过无效标的报错不中断请求,最终返回结果保留有效标的的正常数据,无效标的对应字段值填充为None,期望结构如下:

ticker     field   value
0  gbpeur curncy    Ticker  GBPEUR
1  gbpeur curncy   px_last  1.1698
2  usdeur curncy    Ticker  USDEUR
3  usdeur curncy   px_last  0.9507
4  somejunk curncy  Ticker  None
5  somejunk curncy px_last  None

实现方法

pdblp原生ref方法没有直接的跳过错误+自动填充空值的参数,可通过以下两种方案实现需求:

  • 方案1:修改连接初始化参数,关闭证券错误抛出
    初始化BCon对象时传入raise_security_errors=False,即可让接口遇到无效标的时不直接中断请求:
    con = pdblp.BCon(raise_security_errors=False)
    con.start()
    
    注意:该配置下无效标的不会自动填充为None,返回结果中会带有标识为securityError的异常行,需要自行做数据清洗,将无效标的对应字段的value替换为None,调整为目标长表结构即可。
  • 方案2:单标的遍历+异常捕获兜底
    不修改全局连接配置,遍历ticker列表逐个发起请求,通过try-except捕获单个标的的报错,对报错标的手动构造值为None的行追加到结果集,逻辑可控性更高:
    import pandas as pd
    
    result_frames = []
    for single_ticker in ticker:
        try:
            single_res = con.ref(single_ticker, field)
            result_frames.append(single_res)
        except ValueError:
            # 捕获无效标的报错,手动构造空值行
            for single_field in field:
                error_row = pd.DataFrame({
                    'ticker': [single_ticker],
                    'field': [single_field],
                    'value': [None]
                })
                result_frames.append(error_row)
    final_df = pd.concat(result_frames, ignore_index=True)
    
    该方案除了能处理无效标的报错,对单标的字段权限不足、临时请求超时等零散报错也能统一兜底,最终返回结构完全匹配预期。

内容的提问来源于stack exchange,提问作者darren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 08:31:06