2017-07-26 9 views
2

Bloomberg APIとpdblpライブラリをインストールしました。履歴データを取得してDataframeに保存することができます。しかし、私はマルチレベルのデータフレームからデータにアクセスする方法がわかりません。PythonでマルチレベルのPandas Dataframeにアクセスする方法 - データフレームにBloombergデータを保存する

import pdblp 
import pandas as pd 

con = pdblp.BCon(debug=True, port=8194) 
con.start() 

start = datetime.datetime.strptime("19800101", '%Y%m%d').strftime("%Y%m%d") 
end = datetime.date.today().strftime("%Y%m%d") 


    df = pd.DataFrame(con.bdh('SPY US Equity',['PX_LAST', 'VOLUME'],start, end)) 
    print(df) 

Dataframeの日付列にアクセスできません。誰でも助けてくれますか? 私がしようとした場合 - 私は、出力の下に取得していますdf.columns:以下

MultiIndex(levels=[['SPY US Equity'], ['PX_LAST', 'VOLUME']], 
     labels=[[0, 0], [0, 1]], 
     names=['ticker', 'field']) 

をDATAFRAME

からデータ
ticker  SPY US Equity    
field   PX_LAST  VOLUME 
date         
1993-01-29  43.9375 1003200.0 
1993-02-01  44.2500  480500.0 
1993-02-02  44.3438  201300.0 
1993-02-03  44.8125  529400.0 
1993-02-04  45.0000  531500.0 
1993-02-05  44.9688  492100.0 
1993-02-08  44.9688  596100.0 
1993-02-09  44.6563  122100.0 
1993-02-10  44.7188  379600.0 
1993-02-11  44.9375  19500.0 
1993-02-12  44.5938  42500.0 
1993-02-16  43.4688  374800.0 
1993-02-17  43.4375  210900.0 
1993-02-18  43.4063  378100.0 
1993-02-19  43.5625  34900.0 
1993-02-22  43.7188  513600.0 
1993-02-23  43.6875  373700.0 
1993-02-24  44.2500  26300.0 
1993-02-25  44.3438  44500.0 
1993-02-26  44.4063  66200.0 
1993-03-01  44.2813  66500.0 
1993-03-02  44.9375  182400.0 

df.indexが結果の下に与えている:

 DatetimeIndex(['1993-01-29', '1993-02-01', '1993-02-02', '1993-02-03', 
      '1993-02-04', '1993-02-05', '1993-02-08', '1993-02-09', 
      '1993-02-10', '1993-02-11', 
      ... 
      '2017-07-13', '2017-07-14', '2017-07-17', '2017-07-18', 
      '2017-07-19', '2017-07-20', '2017-07-21', '2017-07-24', 
      '2017-07-25', '2017-07-26'], 
      dtype='datetime64[ns]', name='date', length=6168, freq=None) 

DF .loc ['1993-02-22']は次の結果を返します:

ticker   field 
    SPY US Equity PX_LAST  43.7188 
       VOLUME  513600.0000 
+2

'何を示してdf.index'ん:

df = df.reset_index() 

さて、あなたはあなたの '日付' 列を使用して見ることができますか? 'df.loc ['1993-02-22']'を例として – EdChum

+0

df.indexとdf.loc ['1993-02-22'の質問を更新しました。 ]結果 –

答えて

2

経由でアクセスします。 reset_indexでそれを引き出します。

df['date'] 
+0

ありがとう!そのうまく動作します。私はこの値を使ってPlotlyを使ってグラフを描いています。私はKeyerrorを取得しています:次のコード 'data = [go.Scatter(x = df ['date']、y = df.iloc [:、1)]'を返すならば 'Plotly_domain' '解決方法 –

+0

@ArvinthKumar私はいませんPlotlyに精通している。詳細については別の質問をしてください。 –

+0

Okie。ありがとう..いいえProb –

2

date列は列ではなく、indexまたは行ラベルです。

あなたは '日付' は、あなたのインデックスであるindex属性

df.index