0

でインデックス付けされたパンダの時系列を使用していますがDatetimeIndex、半年ごとの頻度をサポートする必要があります。基本的な半年ごとの頻度にはとが1H=Jan-Junあり2H=Jul-Decますが、一部のシリーズでは、たとえば、先月が12月以外の月になる場合が1H=Dec-Mayあり2H=Jun-Novます。

パンダのクラスから派生したカスタムクラスを作成することで、私が望むことを確実に達成できると思いDateOffsetます。しかし、それを行う前に、組み込みの頻度、たとえば6か月の頻度を単純に使用できる方法があるかどうか知りたいのですが。これを実行しようとしましたが、希望どおりにリサンプリングできません。

例えば:

import numpy as np
import pandas as pd
from datetime import datetime

data = np.arange(12)
s = pd.Series(data, pd.date_range(start=datetime(2007,1,31), periods=len(data), freq="M"))
s.resample("6M")

Out[11]:
2007-01-31    0.0
2007-07-31    3.5
2008-01-31    9.0
Freq: 6M

パンダが8月から1月と2月から7月のウィンドウを使用してどのように集約しているかに注目してください。この基本ケースでは、1月から6月と7月から12月が必要です。

4

1 に答える 1

0

Series.resample()2つのパラメータloffset=との組み合わせを使用できますclosed=

例えば:

In [1]: import numpy as np, pandas as pd

In [2]: data = np.arange(1, 13)

In [3]: s = pd.Series(data, pd.date_range(start='1/31/2007', periods=len(data), freq='M'))

In [4]: s.resample('6M', how='sum', closed='left', loffset='-1M')
Out[4]: 
2007-06-30    21
2007-12-31    57

以前loffset='-1M'は、パンダにデフォルトより1期間早く集計するように指示していました(1月から6月に移動しました)。

以前closed='left'は、アグリゲーターにサンプルウィンドウの「左」端を含め、「右」端を除外させていました(closed='right'これがデフォルトの動作です)。

注:私はhow='sum'それが私が思ったことをしていることを確認するためだけに使用しました。適切なhowのいずれかを使用できます。

于 2012-11-14T20:39:03.303 に答える