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

如何在Refinitiv Eikon的ek.get_data中同时获取日期与指标值?

使用Refinitiv Eikon API获取每股账面价值及对应日期的问题

问题描述

我正尝试用Refinitiv Eikon API获取历史每股账面价值(Book Value per Share),希望同时输出指标值和对应日期。目前已成功获取指标值,但输出的时间序列以整数为索引。

现有可运行代码:

import eikon as ek
ek.set_app_key(my_api)

ric = 'MSFT.O'

params = {'SDate':'1999-12-31',
          'EDate' :'2021-03-01',
          'Period': 'FQ0',
          'Frq':'FQ',
          'reportingState':'Rsdt',
          'curn':'Native',
          'Scale':'3'}

df = ek.get_data(ric, 'TR.BookValuePerShare', parameters=params)

尝试添加'Output': 'Date'参数后出现错误:

params = {'SDate':'1999-12-31',
          'EDate' :'2021-03-01',
          'Period': 'FQ0',
          'Frq':'FQ',
          'reportingState':'Rsdt',
          'curn':'Native',
          'Scale':'3', 
          'Output': 'Date',
}

错误信息:

(        0  TR.BOOKVALUEPERSHARE
 0  MSFT.O                  <NA>,
 [{'code': 405,
   'col': 1,
   'message': "Invalid output format: neither 'Col' nor 'Row' parameter is specified before output colums/rows.",
   'row': 0}])

想了解:Row和Col参数是什么?如何同时输出指标值及对应日期?


解答

1. Row和Col参数的作用

  • Row参数:定义数据按行展示的维度字段,比如将日期设为Row,每条数据行对应一个日期
  • Col参数:定义数据按列展示的维度字段,比如将每股账面价值设为Col,每列对应一个指标

错误的核心原因是:使用Output参数前,必须先通过Row或Col明确数据的展示维度,否则API无法确定如何组织输出内容。

2. 两种实现同时输出指标值和日期的方法

方法一:直接指定目标字段(推荐)

不需要使用Row/Col/Output参数,直接在ek.get_data的字段列表中同时指定每股账面价值和对应的报告日期字段即可:

import eikon as ek
ek.set_app_key(my_api)

ric = 'MSFT.O'

params = {'SDate':'1999-12-31',
          'EDate' :'2021-03-01',
          'Period': 'FQ0',
          'Frq':'FQ',
          'reportingState':'Rsdt',
          'curn':'Native',
          'Scale':'3'}

# 同时请求指标值和报告日期字段
df, err = ek.get_data(ric, ['TR.BookValuePerShare', 'TR.BookValuePerShare.ReportDate'], parameters=params)
print(df)

这种方式返回的DataFrame会包含两列:TR.BOOKVALUEPERSHARE(指标值)和TR.BOOKVALUEPERSHARE.REPORTDATE(对应日期),逻辑直观,适合大多数场景。

方法二:使用Row/Col+Output参数

如果需要按自定义维度组织数据,可以通过Row定义日期维度,Col定义指标维度,再用Output指定要输出的内容:

import eikon as ek
ek.set_app_key(my_api)

ric = 'MSFT.O'

params = {'SDate':'1999-12-31',
          'EDate' :'2021-03-01',
          'Period': 'FQ0',
          'Frq':'FQ',
          'reportingState':'Rsdt',
          'curn':'Native',
          'Scale':'3',
          'Row': 'TR.ReportDate',  # 行维度设为报告日期
          'Col': 'TR.BookValuePerShare',  # 列维度设为每股账面价值
          'Output': 'Date,Value'  # 指定输出日期和指标值
}

# 字段参数传空字符串,由params定义输出内容
df, err = ek.get_data(ric, '', parameters=params)
print(df)

这种方式适合多维度数据展示的复杂场景,比如同时展示多个指标或多个标的的时间序列。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:00:39