月の時系列があり、月が欠落している可能性があり、DatetimeIndexを使用してデータをpandas Seriesオブジェクトにロードするときに、各日付の観測値が月末の日付としてラベル付けされていることを確認するとします。ただし、生の入力日は月のどこかにある可能性があるため、月末の観測を強制する必要があります。
私の最初の考えは、次のようなことをすることでした。
import pandas as pd
pd.DatetimeIndex([datetime(2012,1,20), datetime(2012,7,31)], freq='M')
ただし、これは日付を[2012-01-20,2012-07-31]のままにし、月末の値[2012-01-31,2012-07-31]に強制することはありません。
私の2番目の試みは:
ix = pd.DatetimeIndex([datetime(2012,1,20), datetime(2012,7,31)], freq='M')
s = pd.Series(np.random.randn(len(ix)), index=ix)
s.asfreq('M')
しかし、これは次のようになります。
2012-01-31 NaN
2012-02-29 NaN
2012-03-31 NaN
2012-04-30 NaN
2012-05-31 NaN
2012-06-30 NaN
2012-07-31 0.79173
Freq: M
内部的には、関数はDatetimeIndexasfreq
を呼び出しています。date_range
この問題は、 ;PeriodIndex
の代わりに使用すると簡単に解決できます。DatetimeIndex
ただし、現在サポートされていないいくつかの周波数をサポートする必要があります。PeriodIndex
私が知る限り、パンダを自分のPeriod
周波数で拡張する方法はありません。