【问题标题】:Slicing a Pandas DataFrame using 2 compound indexes使用 2 个复合索引对 Pandas DataFrame 进行切片
【发布时间】:2014-10-21 06:40:41
【问题描述】:

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

  • 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

【问题讨论】:

    标签: python python-2.7 pandas


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2019-03-23
      • 2012-12-11
      • 1970-01-01
      • 2018-11-22
      • 2014-05-02
      • 2020-07-31
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多