2017-01-08 4 views
2

在庫データを取得するためにpandasデータウェアラを使用しています。pandasのフリークエンシーを設定するDataFrameを作成した後のDatetimeIndex

import pandas as pd 
import pandas_datareader.data as web 
ABB = web.DataReader(name='ABB.ST', 
        data_source='yahoo', 
        start='2000-1-1') 

ただし、デフォルトでは、結果のデータフレームにfreqは設定されていません。 FREQをナビゲートする+1などを使用することはできませんDatetimeIndexイムに設定されていない場合

for index, row in ABB.iterrows(): 
    ABB.loc[[index + 1]] 

: は、私はこのようなインデックスを使用してナビゲートできるようにするFREQを必要としています。

私が見つけたのは、2つの機能astyperesampleです。私はすでに周波数を知っているのでresampleは過度のように見えます、私は毎日フリークを設定したいと思います。

私の質問は、ABBでastypeを使用して毎日周波数を設定する方法です。

+1

'ABB = ABB.asfreq( 'd')'は、データなしの日数をNaNで日単位に変更する必要があります。また、 'for-loop'の中で' ABB.loc [[index + 1]] 'を' ABB.loc [[index + pd.Timedelta(days = 1)]] 'に変更してください。 – Abdou

+0

あなたはそれを答えとして置くべきです – user3139545

答えて

3

試してみてください。

ABB = ABB.asfreq('d') 

データを除いた日数は、頻度を毎日NaNに変更する必要があります。

for index, row in ABB.iterrows(): 
    print(ABB.loc[[index + pd.Timedelta(days = 1)]]) 

感謝を次のように

また、あなたはあなたのfor-loopを書き換える必要があります!

0

インデックスresampleの必要性の変更頻度はあなたのためですが、その後meansumのようないくつかの関数で集計列が必要な場合:

print (ABB.resample('d').mean()) 
print (ABB.resample('d').sum()) 

に価値の発見位置のためget_locで別の行を使用ilocを選択する必要がある場合DatetimeIndex

print (ABB.iloc[ABB.index.get_loc('2001-05-09') + 1]) 
Open   188.00 
High   192.00 
Low    187.00 
Close   191.00 
Volume  764200.00 
Adj Close  184.31 
Name: 2001-05-10 00:00:00, dtype: float64 
関連する問題