2015-10-20 80 views
5

我有一個由datetime.date索引的時間序列。下面是該系列的第一個結:如何在不包含索引的日期中分割熊貓時間序列?

1999-12-31 0 
2000-06-30 170382.118454 
2000-12-29 -319260.443362 

我想從系列,直到2000年12月28日開始到切片,但這不起作用,因爲該日期不在指數(我得到一個KeyError異常當我嘗試original_series[:datetime.date(2000,12,28)]。我也試過指數轉換成時間戳,但給人很假的結果(其生產假節,見下文),所以我想,如果有一個很好的辦法解決這個問題。

test = pd.Series(original_series.values, map(pd.Timestamp, original_series.index)) 

乍一看,這看起來很好:

1999-12-31   0.000000 
2000-06-30 170382.118454 
2000-12-29 -319260.443362 

但後來我試着做我的切片(在哪裏在2000年1月這些額外的日子是從哪裏來的?):

In [84]: test[:'2000-12-28'] 
Out[84]: 
1999-12-31   0.000000 
2000-06-30 170382.118454 
2000-01-03 -71073.979016 
2000-01-04 100498.744748 
2000-01-05  91104.743684 
2000-01-06  82290.255459 

回答

3

你可以簡單地做,如果ts是你time.serie

In [77]: ts = pd.Series([99,65],index=pd.to_datetime(['2000-12-24','2000-12-30'])) 

In [78]: ts 
Out[78]: 
2000-12-24 99 
2000-12-30 65 
dtype: int64 

In [79]: ts[ts.index<=pd.to_datetime('2000-12-28')] 
Out[79]: 
2000-12-24 99 
dtype: int64 

如果你有indexstring剛剛入手:

ts[ts.index.map(pd.to_datetime)<=pd.to_datetime('2000-12-28')] 
+0

你answe r是絕對正確的,但我也很愚蠢 - 我沒有按指數排序我的時間序列,因此我對「製造」日期感到困惑。謝謝您的幫助。 –

相關問題