首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python datatable中查找和标记重复项

如何在python datatable中查找和标记重复项
EN

Stack Overflow用户
提问于 2020-06-16 00:14:31
回答 1查看 108关注 0票数 3

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

它应该是这样工作的:

代码语言:javascript
复制
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中分配布尔值(无论是否重复)的语法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-16 11:15:47

据我所知,

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

以下是我的解决方案:

代码语言:javascript
复制
import datatable as dt
from datatable import by,f,count

示例数据表-

代码语言:javascript
复制
DT_EX = dt.Frame(A=list("XXYYYYXX"),B=[1, 2, 1, 2, 2, 1,3,3])
代码语言:javascript
复制
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]

并执行这个代码块-

代码语言:javascript
复制
DT[:,count(),by(f.A,f.B)][:,f[:].extend({'duplicated': f.count>1 })]

它的工作原理类似于先对cols A,B应用分组,对每个组的观察值进行计数。接下来,它使用一个名为duplicated的新列扩展datatable,如果count有一个以上的值,它应该填充为duplicated 'True‘否则'False’。

输出是-

代码语言:javascript
复制
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]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62392451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档