2014-10-20 139 views
1

在帶時間戳作爲化合物索引的數據幀中,我們如何可以切片同時滿足條件的行:切片使用熊貓數據幀2個化合物索引

  • start是前2014-09-26 12:00:00
  • stop2014-09-26 13:00:00

df的索引startstop最初是正常的列,它被設置爲索引以便於切片,就像在原因1指數:

           jobId 
     start    stop        
2014-09-26 09:45:01 2014-09-26 09:48:02   c35877 
2014-09-26 11:23:46 2014-09-26 11:53:13   8f0f64 
2014-09-26 11:46:50 2014-09-26 11:58:07   52ac37 
2014-09-26 12:10:15 2014-09-26 12:23:23   47dfc2 
2014-09-26 12:13:52 2014-09-26 12:18:31   c35877 
2014-09-26 12:30:47 2014-09-26 12:39:49   8f0f64 
2014-09-26 12:37:53 2014-09-26 12:45:48   96b20b 
2014-09-26 12:45:35 2014-09-26 12:50:22   8f0f64 
2014-09-26 12:49:26 2014-09-26 13:03:59   285618 
2014-09-26 13:04:42 2014-09-26 13:15:23   2c74a9 
2014-09-26 13:20:01 2014-09-26 13:27:46   8f0f64 

回答

1

使用查詢方法(最新版本):

import pandas 
from io import StringIO 

rawdata = StringIO("""start,stop,jobID 
2014-09-26 09:45:01,2014-09-26 09:48:02,c35877 
2014-09-26 11:23:46,2014-09-26 11:53:13,8f0f64 
2014-09-26 11:46:50,2014-09-26 11:58:07,52ac37 
2014-09-26 12:10:15,2014-09-26 12:23:23,47dfc2 
2014-09-26 12:13:52,2014-09-26 12:18:31,c35877 
2014-09-26 12:30:47,2014-09-26 12:39:49,8f0f64 
2014-09-26 12:37:53,2014-09-26 12:45:48,96b20b 
2014-09-26 12:45:35,2014-09-26 12:50:22,8f0f64 
2014-09-26 12:49:26,2014-09-26 13:03:59,285618 
2014-09-26 13:04:42,2014-09-26 13:15:23,2c74a9 
2014-09-26 13:20:01,2014-09-26 13:27:46,8f0f64 
""") 
df = pandas.read_csv(rawdata, parse_dates=True, index_col=['start', 'stop']) 

df.query("start > '2014-09-26 12:00:00' and stop < '2014-09-26 13:00:00'") 

它打印:

          jobID 
start    stop      
2014-09-26 12:10:15 2014-09-26 12:23:23 47dfc2 
2014-09-26 12:13:52 2014-09-26 12:18:31 c35877 
2014-09-26 12:30:47 2014-09-26 12:39:49 8f0f64 
2014-09-26 12:37:53 2014-09-26 12:45:48 96b20b 
2014-09-26 12:45:35 2014-09-26 12:50:22 8f0f64