2013-12-08 6 views
5

たとえば、1日のデータを1日のデータに索引付けすると(たとえば、16:00の日々の価格の索引)、ある日の16:00タイムスタンプの1分のデータがない場合、最後のnullでない1分のデータからのフィルを転送したい。以下の場合、13分の16時前の1分のデータはなく、最後の1分のデータは10分のデータである。インデックスを再作成するときの塗りつぶし方法の機能は何ですか?

reindexをmethod = 'ffill'で使用すると、次のコードが16時に13の値を埋めるとは思いませんか?毎日の検査ではそれが欠落していることがわかります。 1(または、むしろI)として記入する

import pandas as pd 
import numpy as np 

hf_index = pd.date_range(start='2013-05-09 9:00', end='2013-05-13 23:59', freq='1min') 
hf_prices = np.random.rand(len(hf_index)) 
hf = pd.DataFrame(hf_prices, index=hf_index) 
hf.ix['2013-05-10 18:00':'2013-05-13 18:00',:]=np.nan 
hf.plot() 

ind_daily = pd.date_range(start='2013-05-09 16:00', end='2013-05-13 16:00', freq='B') 

print(ind_daily.values) 
daily1 = hf.reindex(index=ind_daily, method='ffill') 

が期待する、私はこれを実行する必要があります。

daily2 = daily1.fillna(method='ffill') 

このような場合は、REINDEX内の充填方法は、実際に何をやっています。パンダのドキュメンテーションから私には分かりません。私は上記の行をする必要はないはずです。

+0

Hmm。私は予期しない動作であり、バグかもしれないことに同意します。その間にあなたを助けてくれるものとして、datetime-indexedデータでは、[resample](http://pandas.pydata。org/pandas-docs/dev/generated/pandas.DataFrame.resample.html)は通常、再インデックスよりも良い選択です。特に、あなたの問題に関連する可能性のあるキーワード引数 '' label''と '' close''を見てください。 –

+0

@ user915そうしないと、欠落値を欠損値として扱いながら、データフレームを他の頻度に再インデックスすることができますか? –

+0

@ method = Noneを使用してランニングしますか? – user915

答えて

1

私もここにgithubの上で私のコメントを書く:

私の意見では、現在の動作がより理にかなっています。一部のシナリオでは、「ナノ」値は有効な「実際の」値になります。実際の「ナノ」値の概念は、変化する指数のために「ナノ」値とは異なるはずである。私はこのようなデータフレームがある場合:

 A  B  C 
1 1.242 NaN 0.110 
3 NaN -0.185 -0.209 
5 -0.581 1.483 NaN 

を、私はナンとして、すべてのナンを維持したい、それが持ってはるかに理にかなって:

df.reindex([2, 4, 6], method='ffill') 
     A  B  C 
2 1.242 NaN 0.110 
4 NaN -0.185 -0.209 
6 -0.581 1.483 NaN 

だけ(ナンまたはがあるどのような値とります次の使用可能なインデックスまで前に記入してください。 再インデックスは、データに必須のfillnaを強制してはいけません。

これはここ

A B C 
2 NaN NaN NaN 
4 NaN NaN NaN 
6 NaN NaN NaN 

を生成

df.reindex([2, 4, 6], method=None) 

全く異なる例を示します。

np.nan

だけなしを意味することができます。私は毎時のデータを持っており、週末には計算がちょうど適用されないと言っています。週末にこれらの列にnanを記入します。今、私がreindexインデックスを細かくすると、毎分と言っても、インデックスは金曜日から最後の値を選び、週末全体にわたってそれを記入します。これは間違っています。

データフレームのインデックスを再作成するときは、転送先はとなります(nanまたはnot nan)。次の利用可能なインデックスまで転送されます。 「ナノ」値はそのまま維持したい実際の有効な観測値に過ぎません。

再インデックスでは、データに必須の塗りつぶしを強制しないでください。

+0

あなたの上記の例で何かを誤解していますが、要素(4、B)= -0.185ではなく-0.742でないと申し訳ありませんか?私はあなたのことを理解しようとしています。私はffillとfillnaの区別についてあなたの大きなポイントを得るようになっていますが、この例を理解しているかどうかはわかりません。 – user915

+0

@ user915申し訳ありませんが、間違ったコピー貼り付けでした。それを固定しました。 gzubページの使用例を参照してください。 –

関連する問題