使用pdblp获取单个历史数据的最简方法是什么?
获取pdblp bdh返回的单一数值最简方法
首先,你的bdh调用返回的是一个多层索引(MultiIndex)的DataFrame——行是日期索引,列是ticker + field的双层结构。要直接拿到那个1.1018的数值,有几种非常简洁的方式:
方法1:直接用位置索引(最快捷)
因为你的结果只有1行1列数据,直接用iloc定位第一行第一列即可:
import pdblp as bbg con = bbg.BCon(port=8194, timeout=5000, debug=False) con.start() EURUSD = con.bdh('EURUSD Curncy', 'PX_LAST', monthEnd, monthEnd) value = EURUSD.iloc[0, 0] print(value) # 输出1.1018
方法2:通过索引名称精准定位
如果想更明确地指定日期、ticker和field(适合后续扩展多数据的场景),可以用loc结合元组列索引:
value = EURUSD.loc[monthEnd, ('EURUSD Curncy', 'PX_LAST')]
方法3:调用bdh时直接简化返回结构
pdblp的bdh方法支持flatten参数,设置为True会把双层列索引扁平化;当仅请求一个ticker和一个field时,会直接返回Series,取值更直观:
EURUSD = con.bdh('EURUSD Curncy', 'PX_LAST', monthEnd, monthEnd, flatten=True) value = EURUSD.iloc[0] # 或者更直接的写法: value = EURUSD.values[0]
要是你确定只会返回单个值,甚至可以链式调用一行搞定:
value = con.bdh('EURUSD Curncy', 'PX_LAST', monthEnd, monthEnd).iloc[0, 0]
内容的提问来源于stack exchange,提问作者Sam Harper
相关产品推荐
相关产品推荐

