2013-10-04 32 views
10

My Pandy Dataframe rama wygląda coś takiegoWybieranie danych między określonych godzinach w dataframe pandy

1. 2013-10-09 09:00:05 
2. 2013-10-09 09:05:00 
3. 2013-10-09 10:00:00 
4. ............ 
5. ............ 
6. ............ 
7. 2013-10-10 09:00:05 
8. 2013-10-10 09:05:00 
9. 2013-10-10 10:00:00 

chcę dane leżącego w godzinach między 9 i 10 ... jeśli ktoś pracował na coś takiego, byłoby naprawdę pomocne.

Odpowiedz

20
In [7]: index = date_range('20131009 08:30','20131010 10:05',freq='5T') 

In [8]: df = DataFrame(randn(len(index),2),columns=list('AB'),index=index) 

In [9]: df 
Out[9]: 
<class 'pandas.core.frame.DataFrame'> 
DatetimeIndex: 308 entries, 2013-10-09 08:30:00 to 2013-10-10 10:05:00 
Freq: 5T 
Data columns (total 2 columns): 
A 308 non-null values 
B 308 non-null values 
dtypes: float64(2) 

In [10]: df.between_time('9:00','10:00') 
Out[10]: 
          A   B 
2013-10-09 09:00:00 -0.664639 1.597453 
2013-10-09 09:05:00 1.197290 -0.500621 
2013-10-09 09:10:00 1.470186 -0.963553 
2013-10-09 09:15:00 0.181314 -0.242415 
2013-10-09 09:20:00 0.969427 -1.156609 
2013-10-09 09:25:00 0.261473 0.413926 
2013-10-09 09:30:00 -0.003698 0.054953 
2013-10-09 09:35:00 0.418147 -0.417291 
2013-10-09 09:40:00 0.413565 -1.096234 
2013-10-09 09:45:00 0.460293 1.200277 
2013-10-09 09:50:00 -0.702444 -0.041597 
2013-10-09 09:55:00 0.548385 -0.832382 
2013-10-09 10:00:00 -0.526582 0.758378 
2013-10-10 09:00:00 0.926738 0.178204 
2013-10-10 09:05:00 -1.178534 0.184205 
2013-10-10 09:10:00 1.408258 0.948526 
2013-10-10 09:15:00 0.523318 0.327390 
2013-10-10 09:20:00 -0.193174 0.863294 
2013-10-10 09:25:00 1.355610 -2.160864 
2013-10-10 09:30:00 1.930622 0.174683 
2013-10-10 09:35:00 0.273551 0.870682 
2013-10-10 09:40:00 0.974756 -0.327763 
2013-10-10 09:45:00 1.808285 0.080267 
2013-10-10 09:50:00 0.842119 0.368689 
2013-10-10 09:55:00 1.065585 0.802003 
2013-10-10 10:00:00 -0.324894 0.781885 
+2

Dokładnie tego szukałem, istnieje wiele innych rozwiązań SO, które nie wspominają o tym prostym wbudowaniu. – James

+0

between_time() to nowsza funkcja – justis

+0

time_time została dodana na 0.9.1; który był 3 główne wydania temu – Jeff

-1

Zakładając oryginalnego dataframe nazywa się „DF”, a kolumna czas nazywany jest „czas” to będzie działać: (gdzie start_time i end_time odpowiadają przedziale czasowym, który chcesz)

>>> df_new = df[(df['time'] > start_time) & (df['time'] < end_time)] 
+1

To nie zadziała, ponieważ dane obejmują kilka dni. –