[英]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 中實現? 如何使用索引檢索數據表行?
排除第 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
選擇器可以在其中包含內容列表的事實(請參閱文檔)。 因此,為了“取消選擇”第 3 行,我們將選擇一個切片:3
,然后選擇另一個切片4:
。 不幸的是,Python 只允許在方括號內使用切片符號,因此我們必須明確指定上述切片: slice(None, 3)
和slice(4, None)
。 將它們放在一起會產生@myamulla_ciencia 發布的解決方案:
DT_X[[slice(None, 3), slice(4, None)], :]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.