2015-07-13 75 views
2

我試圖檢測系列中是否有時間戳,但即使它存在也會返回false。有人能幫我找出爲什麼這不起作用嗎?Python Pandas:檢測系列中是否存在時間戳

In [149]: results.index[1] in time_range[0] 
Out[149]: False 

In [150]: results.index[1] 
Out[150]: Timestamp('2013-07-05 00:00:00') 

In [151]: time_range[0][19] 
Out[151]: Timestamp('2013-07-05 00:00:00') 

In [152]: type(time_range[0][19]) 
Out[152]: pandas.tslib.Timestamp 

In [153]: type(results.index[1]) 
Out[153]: pandas.tslib.Timestamp 

In [154]: type(time_range[0]) 
Out[154]: pandas.core.series.Series 

回答

1

可以使用.isin運營商pd.Series.index

import pandas as pd 
import numpy as np 

ser = pd.Series(np.random.randn(10), index=pd.date_range('2013-07-05 00:00:00', periods=10, freq='D')) 

2013-07-05 -1.1967 
2013-07-06 0.2598 
2013-07-07 -0.0319 
2013-07-08 -0.7489 
2013-07-09 -0.3605 
2013-07-10 0.0354 
2013-07-11 0.5557 
2013-07-12 -1.9588 
2013-07-13 1.4929 
2013-07-14 1.3351 
Freq: D, dtype: float64 


time_range = [pd.Timestamp('2013-07-05'), pd.Timestamp('2013-07-07')] 

ser.index.isin(time_range) 

array([ True, False, True, False, False, False, False, False, False, False], dtype=bool) 
+0

謝謝你這麼快速的迴應!有用!如果我只有一個時間戳被檢測到,是否有更好的解決方案,比將這個單一時間戳轉換爲一個Series更好? – Jim

+0

@Jim如果你只是想檢測一個時間戳,標準'in'應該工作'在time_range'中的pd.Timestamp('2013-07-05')返回'True'。 –

+0

這有點怪,它仍然不起作用。我想這可能是因爲我構建time_range的方式不太正確。無論如何非常感謝!非常感謝!祝你工作順利! – Jim

相關問題