2014-01-21 39 views
3

我有一個熊貓數據框(dfnew),其中一列(時間戳)爲datetime64[ns]類型。現在我想看看在特定的時間範圍內有多少觀測值可以說從10:00:00到12:00:00。選擇在特定時間範圍內觀察datetime64 [ns]類型

dfnew['timestamp'] = dfnew['timestamp'].astype('datetime64[ns]') 
    dfnew['timestamp] 
0 2013-12-19 09:03:21.223000 
1 2013-12-19 11:34:23.037000 
2 2013-12-19 11:34:23.050000 
3 2013-12-19 11:34:23.067000 
4 2013-12-19 11:34:23.067000 
5 2013-12-19 11:34:23.067000 
6 2013-12-19 11:34:23.067000 
7 2013-12-19 11:34:23.067000 
8 2013-12-19 11:34:23.067000 
9 2013-12-19 11:34:23.080000 
10 2013-12-19 11:34:23.080000 
11 2013-12-19 11:34:23.080000 
12 2013-12-19 11:34:23.080000 
13 2013-12-19 11:34:23.080000 
14 2013-12-19 11:34:23.080000 
15 2013-12-19 11:34:23.097000 
16 2013-12-19 11:34:23.097000 
17 2013-12-19 11:34:23.097000 
18 2013-12-19 11:34:23.097000 
19 2013-12-19 11:34:23.097000 
Name: timestamp 

    dfnew['Time']=dfnew['timestamp'].map(Timestamp.time) 
    t1 = datetime.time(10, 0, 0) 
    t2 = datetime.time(12, 0, 0) 
    print len(dfnew[t1<dfnew["Time"]<t2]) 

這產生一個錯誤類型錯誤:無法datetime.time比較系列。 我是熊貓數據框的新手。我想我在這裏犯了一個非常愚蠢的錯誤。任何幫助表示讚賞。

回答

2

可以使用DatetimeIndex indexer_between_time方法,所以在這裏一招利用它的系列/列傳遞給DatetimeIndex構造:

from datetime import time 

# s is your datetime64 column 

In [11]: pd.DatetimeIndex(s).indexer_between_time(time(10), time(12)) 
Out[11]: 
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]) 

這得到10之間的時間位置12個(包括*),所以使用ILOC進行過濾:

In [12]: s.iloc[pd.DatetimeIndex(s).indexer_between_time(time(10), time(12))] 
Out[12]: 
1 2013-12-19 11:34:23.037000 
2 2013-12-19 11:34:23.050000 
3 2013-12-19 11:34:23.067000 
4 2013-12-19 11:34:23.067000 
5 2013-12-19 11:34:23.067000 
6 2013-12-19 11:34:23.067000 
7 2013-12-19 11:34:23.067000 
8 2013-12-19 11:34:23.067000 
9 2013-12-19 11:34:23.080000 
10 2013-12-19 11:34:23.080000 
11 2013-12-19 11:34:23.080000 
12 2013-12-19 11:34:23.080000 
13 2013-12-19 11:34:23.080000 
14 2013-12-19 11:34:23.080000 
15 2013-12-19 11:34:23.097000 
16 2013-12-19 11:34:23.097000 
17 2013-12-19 11:34:23.097000 
18 2013-12-19 11:34:23.097000 
19 2013-12-19 11:34:23.097000 
Name: timestamp, dtype: datetime64[ns] 

* include_startinclude_endindexer_between_time可選的布爾參數。

+0

謝謝工作好:) – sau