0

FRED / ALFRED API からリアルタイム データを取得するために 、 を使用して pythonパッケージをインストールしました。 fredpip install fred

私の仕事は、評価realtime_date日をデータに一致させることです。つまり、私が評価日と呼んでいるもの以下の最大値に関連付けられた値を抽出することです ( aDate)。

データ自体は、リストを含む python ディクショナリで返され、各観測がいくつかのメタデータとともにディクショナリに格納されます。各観測ディクショナリには、参照日 ( date)、リクエストがカバーされたリアルタイム期間 ( realtime_endrealtime_start)が含まれます。と値 ( value)。

完全に一致する場合にデータを評価日に一致させる方法はわかりますが、現実の世界ではこれらは例外です。これを不等式に一般化するための助けを探しています。

(以下では変数を使用していますfredKeyが、FRED にアクセスするには独自の FRED API キーを指定する必要があります)。

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ますか?

ありがとう

4

1 に答える 1

3

CPIobvs['observations']['observation']1 つの方法は、 where内のすべての項目を除外して候補を特定すること'realtime_start' > aDateです。

私はこれをジェネレーター式として行います:

candidates = (ob for ob in CPIobvs['observations']['observation'] if
    ob['realtime_start'] <= aDate)

詳細を確認したい場合は、インタープリターでリスト内包表記を作成できます。

[ob for ob in CPIobvs['observations']['observation'] if
    ob['realtime_start'] <= aDate]

これらの候補が特定されたら、組み込みmax()関数keyを使用して、 の値を使用して候補s'realtime_start'をソートします。dict

last_ob = max(candidates, key=lambda ob: ob['realtime_start'])

必要な詳細は と にlast_ob['date']ありlast_ob['value']ます。

于 2013-02-24T05:12:01.540 に答える