给定以下数据表
DT = dt.Frame({'A':['A','A','A','B','B','B'],
'B':['a','a','b','a','a','a'],
})
我想创建列“C”,它对A列和B列中每个组内的行进行编号,如下所示:
A B C
0 A a 1
1 A a 2
2 A b 1
3 B a 1
4 B a 2
5 B a 3
根据this thread,cumcount()或rank()将是选项,但它似乎没有为pydatatable定义:
DT = DT[:, f[:].extend({'C': cumcount()}),by(f.A,f.B)]
DT = DT[:, f[:].extend({'C': rank(f.B)}),by(f.A,f.B)]
a)如何对组内的行进行编号
b)pydatatable是否有一个包含所有当前可用功能的综合资源
这是一种黑客行为,最终应该有一种内置的方法来进行累积计数,甚至可以利用python中的
itertools
或其他性能工具,同时仍然非常快:步骤1:获取列
A
和B
的计数并导出到列表步骤2:使用itertools chain和
list comprehension
的组合来获得累积计数:步骤3:将结果分配回
DT
相关问题 更多 >
编程相关推荐