如何根据pydatatable中指定的索引select观察?

How to select observations based on Index specified in pydatatable?

我有一个数据表 -

DT = dt.Frame(
     A=[1, 3, 2, 1, 4, 2, 1], 
     B=['A','B','C','A','D','B','A'],
     C=['myamulla','skumar','cary','myamulla','api','skumar','myamulla'])
Out[14]: 
   |  A  B   C       
-- + --  --  --------
 0 |  1  A   myamulla
 1 |  3  B   skumar  
 2 |  2  C   cary    
 3 |  1  A   myamulla
 4 |  4  D   api     
 5 |  2  B   skumar  
 6 |  1  A   myamulla

[7 rows x 3 columns]

我现在要 select 观察,在 C 列中有 api 作为 -

DT[f.C=="api",:]
Out[12]: 
   |  A  B   C  
-- + --  --  ---
 0 |  4  D   api

好的,现在我想找到一个与这个观察相关的索引,这样我就可以select数据表中从这个索引开始的观察,

例如上面的观察在DT中有第4行,我可以select从第4行开始的观察为-

DT[4:,:]
Out[15]: 
   |  A  B   C       
-- + --  --  --------
 0 |  4  D   api     
 1 |  2  B   skumar  
 2 |  1  A   myamulla

但是如果在DT中有数百万个观察结果,我无法计算出所需的观察指标。

一种解决方法是创建一个临时索引列:

from datatable import dt, f, update
DT[:, update(index = range(DT.nrows))]

In [8]: DT
Out[8]: 
   |     A  B      C         index
   | int32  str32  str32     int32
-- + -----  -----  --------  -----
 0 |     1  A      myamulla      0
 1 |     3  B      skumar        1
 2 |     2  C      cary          2
 3 |     1  A      myamulla      3
 4 |     4  D      api           4
 5 |     2  B      skumar        5
 6 |     1  A      myamulla      6
[7 rows x 4 columns]

现在在 i 中创建一个过滤器到 select 索引向下:

In [11]: DT[DT[f.C=='api', 'index'][0,0]:, :-1]
Out[11]: 
   |     A  B      C       
   | int32  str32  str32   
-- + -----  -----  --------
 0 |     4  D      api     
 1 |     2  B      skumar  
 2 |     1  A      myamulla
[3 rows x 3 columns]