bloomberg data返回带有错误的数据帧



我这样做,直到创建一个测试错误(注释掉的行):

import pdblp
# create a connection to bbg
con = pdblp.BCon()
con.start()
ticker = ['gbpeur curncy', 'usdeur curncy']
# ticker = ['gbpeur curncy', 'usdeur curncy', 'somejunk curncy']   <-- create a test error
field = ['Ticker', 'px_last']
df = con.ref(ticker, field)
print(df)

返回这个数据帧:

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

现在做完全相同的,但添加一个错误(不存在)股票行情自动收录器)。

返回值是:

ValueError: Unknow security 'somejunk curncy'

是否有一个标志或覆盖来简单地覆盖坏数据以获得结果。

预期的结果:

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    <-- error like this
5  somejunk curncy px_last  None    <-- error like this

这是一种解决方案,它通过逐个检查并消除坏数据返回更短的数据帧。我希望有一个重写的方法会比这种方法更好。

#%%
import pdblp
# create a connection to bbg
con = pdblp.BCon()
con.start()

ticker = ['gbpeur curncy', 'usdeur curncy', 'somejunk curncy']
field = ['Ticker', 'px_last']
# test each one for errors
good_tickers = []
for t in ticker:
try:
df = con.ref(t, field)
good_tickers.append(t)
except ValueError:
print(f'error found with: {t}') 
good_tickers
df = con.ref(good_tickers, field)
print(df)

这是结果:

error found with: somejunk curncy
ticker    field   value
0  gbpeur curncy   Ticker  GBPEUR
1  gbpeur curncy  px_last  1.1696
2  usdeur curncy   Ticker  USDEUR
3  usdeur curncy  px_last  0.9508

相关内容

最新更新