簡體   English   中英

如何取消選擇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 中實現? 如何使用索引檢索數據表行?

排除第 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM