我安装了pythonpackagefred
,使用pip install fred
,从FRED/ALFRED API获取实时数据。在
我现在的任务是将一个评估日期与数据相匹配,以便提取与最大的realtime_date
相关的值,该值小于或等于我所称的评估日期(aDate
)。在
数据本身在python字典中返回,其中包含列表,每个观察值与一些元数据一起存储在字典中——每个观察dict包含:一个参考日期(date
)、请求所覆盖的实时时间段(realtime_end
,realtime_start
)和值(value
)。在
我可以看到,当数据完全匹配时,如何将数据与评估日期相匹配,但在现实世界中,这些都是例外。我正在寻求帮助,把这归纳为不平等。在
(请注意,我使用的是一个变量fredKey
——而您必须提供自己的FRED API密钥才能访问FRED)。在
import fred
fred.key(fredKey)
CPIobvs = fred.observations('CPIAUCSL', realtime_start = "1990-01-01")
aDate == "2008-02-15"
for i in range(1, len(CPIobvs['observations']['observation'])):
if CPIobvs['observations']['observation'][i]['realtime_start'] == aDate:
print (CPIobvs['observations']['observation'][i]['date'],
CPIobvs['observations']['observation'][i]['value']
)
在这个例子中,我选择了一个年度基准修订日期,以确保能得到一些回报。实际上,我通常会在没有发生任何事情的日期更新模拟——在这种情况下,我的方法不会返回任何结果。在
解决方案似乎是匹配小于或等于评估日期的最大日期(一个realtime_start
值)(比如aDate == "2008-02-14"
)。我该如何匹配最大的realtime_date
小于或等于aDate
?在
谢谢
一种方法是通过过滤掉
CPIobvs['observations']['observation']
中'realtime_start'
>
aDate
中的所有项来识别候选项。在我会以generator expression的身份来做这个:
如果要查看详细信息,可以在解释器中形成list comprehension:
^{pr2}$一旦识别出这些候选者,就使用内置的^{} 函数,为
key
提供一个lambda,它使用'realtime_start'
的值对候选的dict
进行排序:您需要的详细信息现在在
last_ob['date']
和last_ob['value']
中。在相关问题 更多 >
编程相关推荐