使用2个复合索引对数据帧进行切片

2024-04-26 21:06:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在以时间戳作为复合索引的数据帧中,如何对满足这两个条件的行进行切片:

  • start2014-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

Tags: 数据df时间切片条件startstopjobid
1条回答
网友
1楼 · 发布于 2024-04-26 21:06:40

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

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

相关问题 更多 >