3

パンダを使って低頻度のデータを高頻度に変換しています(たとえば、毎月から毎日)。この変換を行うとき、結果として得られる高周波インデックスが低周波ウィンドウ全体に広がるようにします。たとえば、次のような月次シリーズがあるとします。

import numpy as np
from pandas import *
data = np.random.randn(2)
s = Series(data, index=date_range('2012-01-01', periods=len(data), freq='M'))

s
2012-01-31    0
2012-02-29    1

今、私はそれを毎日の頻度に変換します:

s.resample('D')
2012-01-31     0
2012-02-01   NaN
2012-02-02   NaN
2012-02-03   NaN
...
2012-02-27   NaN
2012-02-28   NaN
2012-02-29     1

結果の出力が2012-01-31から2012-02-29にどのように変化するかに注目してください。しかし、私が本当に望んでいるのは、2011-01-01から2012-02-29までの日数です。これにより、2012-01-31がまだその中で唯一の非NaN観測である場合でも、日次インデックスが1月全体を「埋める」ようになります。月。

また、高周波数の期間を低周波数の値で満たす方法をより細かく制御できる組み込みのメソッドがあるかどうかも知りたいです。月次から日次の例では、デフォルトでは各月の最終日のみを入力します。を使用しPeriodIndexてシリーズのインデックスを作成する場合s.resample('D', convention='start')、最初の観測値のみを入力することもできます。ただし、月の毎日を月の値で入力し、毎日の平均を入力するオプションも必要です(月の値をその月の日数で割った値)。

基本的なバックフィルとフォワードフィルでは、その月のすべての毎日の観測値を月の値で埋めるのに十分ではないことに注意してください。たとえば、月次シリーズが1月から3月まで実行され、2月の値がNaNである場合、フォワードフィルは1月の値を2月に運びますが、これは望ましくありません。

4

1 に答える 1

5

これはどう?

s.reindex(DatetimeIndex(start=s.index[0].replace(day=1), end=s.index[-1], freq='D'))
于 2012-10-11T13:45:40.050 に答える