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

2024-05-12 21:24:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个如下的数据表

   | 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行的a边

在本例中,我尝试将其作为-

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中实现它?如何使用数据表行的索引检索数据表行


Tags: columnsthetitlewhereonerowsseason数据表
3条回答

排除第三个索引:

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

在H2O的团队和@sammyweemmy讨论之后,我用下面的函数片找到了一个解决方案

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

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

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

如果不想修改原始帧,只需先创建一个副本(因为数据未被复制,所以速度很快):

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

如果需要删除几行,这尤其方便:只需传递一个索引列表作为第一个参数

使用切片的解决方案也很有效:它基于这样一个事实,即i选择器中可以有一个事物列表(请参见docs)。因此,为了“取消选择”第3行,我们将选择一个片:3,然后选择另一个片4:。不幸的是,Python只允许在方括号内使用切片表示法,因此我们必须显式地指定上面的切片:slice(None, 3)slice(4, None)。将它们放在一起,结果会出现在@myamulla_ciencia发布的解决方案中:

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

相关问题 更多 >