如何根据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]
我有一个数据表 -
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]