假設我們有一個月的時間序列,可能缺少月份,並且在將數據加載到帶有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]。
我的第二次嘗試:
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
爲asfreq
函數的調用DatetimeIndex的date_range
引擎蓋下。
如果我使用PeriodIndex
而不是DatetimeIndex
,此問題很容易解決;然而,我需要支持一些目前不支持PeriodIndex
的頻率,據我所知,沒有辦法用我自己的Period
頻率來擴展熊貓。
爲您的最後一個例子是什麼輸出你想什麼呢? – root
我只想要2012-01-31和2012-07-31的條目。但不是NaN,2012-01-31的價值應該是2012-01-20提供的。 – Abiel