如何在 python 数据表中查找和标记重复项

How to find and mark duplicates in a python datatable

我想按组识别 py-dtatable 中的重复行(并创建一个带有布尔值的辅助列 C)。

它应该按照以下方式工作:

DT = dt.Frame(A=[1, 2, 1, 2, 2, 1], B=list("XXYYYY"))

我得到 -> TypeError: Expected a Frame,而不是 class 'datatable.expr.expr.Expr' 当我在其上应用分组以找出一个组的独特观察结果时。

但是,unique() 不起作用,关于 py-datatable 可用函数的文档非常稀疏:https://datatable.readthedocs.io/en/v0.10.1/using-datatable.html#perform-groupby-calculations

我不确定 py-datatable 是否落后于 R datatable 并且它不可能,因为它看起来像是一个基本操作,但我找不到解决方案。有人有它或者可以指出我的资源方向吗?理想情况下,这将包括在一行代码中的新列 C 中分配 bool(重复或不重复)的语法。

据我了解,

他想创建一个列来指示特定观察是否重复。

这是我的解决方案:

import datatable as dt
from datatable import by,f,count

示例数据表 -

DT_EX = dt.Frame(A=list("XXYYYYXX"),B=[1, 2, 1, 2, 2, 1,3,3])

Out[3]: 
   | A    B
-- + --  --
 0 | X    1
 1 | X    2
 2 | Y    1
 3 | Y    2
 4 | Y    2
 5 | Y    1
 6 | X    3
 7 | X    3

[8 rows x 2 columns]

并执行这段代码块-

DT[:,count(),by(f.A,f.B)][:,f[:].extend({'duplicated': f.count>1 })]

它的工作方式类似于首先对 A、B 列应用分组,计算每组的观察值。 接下来,它使用一个名为 duplicated 的新列扩展数据表,在此情况下,如果 count 具有超过 1 个值,则应将其填充为 duplicated 'True' else 'False'

输出是-

Out[5]: 
   | A    B  count  duplicated
-- + --  --  -----  ----------
 0 | X    1      1           0
 1 | X    2      1           0
 2 | X    3      2           1
 3 | Y    1      2           1
 4 | Y    2      2           1

[5 rows x 4 columns]