2017-11-20 7 views
0

私は、次のコードを持っている:パンダパネルデータフレームのインデックスへ

pdata = pdata.swapaxes('items', 'minor') 

そして、私は次の警告を得る:

Panel is deprecated and will be removed in a future version. 
The recommended way to represent these types of 3-dimensional data are 
with a MultiIndex on a DataFrame, via the Panel.to_frame() method 

import pandas as pd 
import pandas_datareader.data as web 

pdata = pd.Panel(dict((stk, web.get_data_yahoo(stk, '1/1/2009', '6/1/2012')) 
         for stk in ['AAPL', 'GOOG', 'MSFT'])) 
pdata 

<class 'pandas.core.panel.Panel'> 
Dimensions: 6 (items) x 861 (major_axis) x 3 (minor_axis) 
Items axis: Open to Volume 
Major_axis axis: 2009-01-02 00:00:00 to 2012-06-01 00:00:00 
Minor_axis axis: AAPL to MSFT 

         AAPL  GOOG  MSFT 
Date   minor   
2009-01-02 Open  12.268572 153.302917 19.530001 
      High  13.005714 159.870193 20.400000 
      Low  12.165714 151.762924 19.370001 
      Close  12.964286 159.621811 20.330000 
      Adj Close 11.621618 159.621811 16.140903 

を通常以下の方法は、私が必要なものを私に与えるだろう

私の目的は、MayorとMinorの行インデックスとして日付と株式ティッカーを使用して、Panelの形式でデータフレームを持つことです。 d。オープン価格などこのように列として:

   minor Open  High  Low   Close  Adj Close 
Date 
2009-01-02 AAPL 12.268572 19.530001 12.165714 12.964286 11.621618  
       GOOG 153.302917 ...   ...   ...   ... 
       MSFT 19.530001 ...   ...   ...   ... 

は、私がデータフレームにパネルオブジェクトを変換しなかったし、pivot_tableまたはset_indexメソッドを使用しようとしましたが、私は、株価表示は、内側であることを取得することはできません行インデックス。 DFでswapaxesメソッドを使用すると、Dateもカラムにスワップされます。私が必要とするフォーマットを得るための簡単な方法はありますか?

+1

これらのパッケージの最新バージョンでは、コードを実行できません。 –

+0

@coldspeed場合によってはweb.get_data_yahooコマンドが機能せず、動作させるために2〜3回実行する必要があります。あなたはそのコマンドから得ているエラーですか? – user280809

+0

はい。 'RemoteDataError'。ああ、それを動作させると4回目の動作となりました。 –

答えて

2

オプション1つの
unstack + swaplevel + sort_index

pdata.to_frame().unstack(0).T\ 
     .swaplevel(0, 1).sort_index(level=[0]).head(6) 

minor     Open  High   Low  Close Adj Close \ 
Date                   
2009-01-02 AAPL 12.268572 13.005714 12.165714 12.964286 11.621618 
      GOOG 153.302917 159.870193 151.762924 159.621811 159.621811 
      MSFT 19.530001 20.400000 19.370001 20.330000 16.140903 
2009-01-05 AAPL 13.310000 13.740000 13.244286 13.511429 12.112095 
      GOOG 159.462845 164.549759 156.482239 162.965073 162.965073 
      MSFT 20.200001 20.670000 20.059999 20.520000 16.291746 

minor     Volume 
Date       
2009-01-02 AAPL 186503800.0 
      GOOG 7267900.0 
      MSFT 50084000.0 
2009-01-05 AAPL 295402100.0 
      GOOG 9841400.0 
      MSFT 61475200.0 

オプション2
温家宝首相の素晴らしいstack同等。

pdata.to_frame().stack().unstack(-2).head(6) 

minor     Open  High   Low  Close Adj Close \ 
Date                   
2009-01-02 AAPL 12.268572 13.005714 12.165714 12.964286 11.621618 
      GOOG 153.302917 159.870193 151.762924 159.621811 159.621811 
      MSFT 19.530001 20.400000 19.370001 20.330000 16.140903 
2009-01-05 AAPL 13.310000 13.740000 13.244286 13.511429 12.112095 
      GOOG 159.462845 164.549759 156.482239 162.965073 162.965073 
      MSFT 20.200001 20.670000 20.059999 20.520000 16.291746 

minor     Volume 
Date       
2009-01-02 AAPL 186503800.0 
      GOOG 7267900.0 
      MSFT 50084000.0 
2009-01-05 AAPL 295402100.0 
      GOOG 9841400.0 
      MSFT 61475200.0 
+1

ニースのソリューション! :) – MaxU

+0

@マックス、ありがとう、ありがとう:] –

+1

それは動作しますか? 'df.stack()。unstack(-2)' – Wen

関連する問題