如何取消选择 pydatatable 中特定索引处的行?

How to deselect row(s) at specific indices in pydatatable?

我有如下数据表,

   | season  title                  rating
-- + ------  ---------------------  ------
 0 |     10  The last one              9.7
 1 |      1  The pilot                 5.6
 2 |      4  The one where estelle     7.8
 3 |     10  The last one              9.7
 4 |      3  The thumb                10  

[5 rows x 3 columns]

此处第 0 行和第 3 行重复,我想将第 3 行保留在一边。

在这个例子中,我尝试将其设置为 -

DT_X[f.season!=10, :]

它过滤了两个观察结果,如下所示,

   | season  title                  rating
-- + ------  ---------------------  ------
 0 |      1  The pilot                 5.6
 1 |      4  The one where estelle     7.8
 2 |      3  The thumb                10  

[3 rows x 3 columns]

但是,我想进行第一个观察,即索引为 0 并过滤掉第 3 行。

在pydatatable中如何实现?如何使用索引检索数据表行?.

排除第三个索引:

DT[[slice(2), 3], :]

在与 H2O 的团队和@sammyweemmy 讨论后,我想出了一个使用函数切片的解决方案,如下所示。

DT_X[[slice(3),slice(4,None)],:]

“删除select”行的最简单方法是简单地将它们从框架中删除:

del DT_X[3, :]   # remove the row at index 3

如果你不想修改原来的框架,那就先创建一个副本(因为没有复制数据所以很快):

DT_clean = DT_X.copy()
del DT_clean[3, :]

如果您需要删除多行,这将特别方便:只需将索引列表作为第一个参数传递即可。

带切片的解决方案也适用:它基于 i selector 中可以包含事物列表的事实(参见 docs)。因此,为了“deselect”第 3 行,我们将 select 一个切片 :3 然后另一个切片 4:。不幸的是,Python 只允许方括号内的切片表示法,因此我们必须明确指定上述切片:slice(None, 3)slice(4, None)。将它们放在一起会得到@myamulla_ciencia:

发布的解决方案
DT_X[[slice(None, 3), slice(4, None)], :]