3

我有一个如下的数据表,

   | 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 并过滤掉第三行。

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

4

3 回答 3

1

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

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

于 2020-09-11T02:45:46.173 回答
1

“取消选择”行的最简单方法是从框架中删除它们:

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

如果你不想修改原始帧,那么只需先创建一个副本(速度很快,因为没有复制数据):

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

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

切片的解决方案也有效:它基于i选择器可以在其中包含事物列表的事实(请参阅文档)。因此,为了“取消选择”第 3 行,我们将选择一个切片:3,然后选择另一个切片4:。不幸的是,Python 只允许在方括号内使用切片表示法,因此我们必须明确指定上述切片:slice(None, 3)slice(4, None). 将它们放在一起导致@myamulla_ciencia 发布的解决方案:

DT_X[[slice(None, 3), slice(4, None)], :]
于 2020-09-14T17:32:42.087 回答
1

排除第三个索引:

DT[[slice(2), 3], :]
于 2020-09-08T22:57:10.143 回答