我试图找到pandas等价于一个带有过滤器的sql count窗口函数。下面是SQL查询:
select t.*,
count(*) filter(where grp = 'new') over(partition by usr order by id) rn
from mytable t
order by usr, id
我按id排序后尝试了下面的方法:
mytable['rn'] = mytable.groupby('usr')['grp'].transform('count')
但这是错误的,因为我没有过滤的grp,因为我应该和我不知道如何做这样的过滤器。那么,正确的pandas等价物(矢量化解决方案)是什么?
注意:如需了解更多上下文,您可以参考此问题,但不必:link
2条答案
按热度按时间vxf3dgd41#
您可以用途:
输出:
jfewjypa2#
类似于等价的SQL标准表达式:
Pandas等效性为: