我这样做很好,直到创建一个测试错误(注释掉的行):
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发布于 2022-06-17 10:32:23
这是一种解决方案,它通过逐个检查和消除坏数据来返回较短的数据。我希望有覆盖的方法会比这种方法更好。
#%%
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.9508https://stackoverflow.com/questions/72657726
复制相似问题