2013-10-04 19 views
10

My Pandas Dataframe khung trông giống như sauChọn dữ liệu giữa giờ cụ thể trong một dataframe gấu trúc

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 

Tôi muốn các dữ liệu nằm ở giữa giờ 9 và 10 ... nếu có ai đã làm việc trên một cái gì đó như thế này, nó sẽ thực sự hữu ích.

Trả lời

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

Đây chính xác là những gì tôi đang tìm kiếm, có rất nhiều giải pháp khác trên SO mà dường như không đề cập đến điều này được xây dựng theo cách đơn giản. – James

+0

between_time() là một tính năng mới hơn – justis

+0

between_time được thêm vào 0.9.1; đó là 3 bản phát hành chính trước đây – Jeff

-1

Giả sử dataframe ban đầu của bạn được gọi là "df" và cột thời gian của bạn được gọi là "thời gian" này sẽ làm việc: (nơi start_time và END_TIME tương ứng với khoảng thời gian mà bạn muốn)

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

Điều này sẽ không hoạt động khi dữ liệu kéo dài trong nhiều ngày. –

Các vấn đề liên quan