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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:57:28