我想在py-dtatable by group中标识重复的行(并创建一个带有布尔值的辅助列C)。
它应该是这样工作的:
DT = dt.Frame(A=[1, 2, 1, 2, 2, 1], B=list("XXYYYY"))我得到了-> TypeError:需要一个帧,但当我在它上面应用分组来找出一个组的唯一观察值时,却得到了'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中分配布尔值(无论是否重复)的语法。
发布于 2020-06-16 11:15:47
据我所知,
他想创建一个列来指示特定的观察是否重复。
以下是我的解决方案:
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 })]它的工作原理类似于先对cols A,B应用分组,对每个组的观察值进行计数。接下来,它使用一个名为duplicated的新列扩展datatable,如果count有一个以上的值,它应该填充为duplicated 'True‘否则'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]https://stackoverflow.com/questions/62392451
复制相似问题