根据条件计算数据框中的连续出现次数

时间:2019-05-16 21:01:29

标签: pandas dataframe count equation

我正在尝试查找一列中是否存在3个或更多连续数字的出现,如果是,则将最后一个标记为1,将其余标记为0。

df['a'] = df.assign(consecutive=df.Count.groupby((df.Count != df.Count.shift()).cumsum()).transform('size')).query('consecutive > @threshold') 我在这里找到的是:Identifying consecutive occurrences of a value,但是这给了我错误:ValueError: Wrong number of items passed 6, placement implies 1.我理解不能将其打印到数据框中的问题,但是要获得所需结果的正确方法是什么? / p>

第二,如果满足此条件,我想对邻近1的多行执行方程(例如2 * b)(例如前移或后继结果),例如移位函数,然后重复执行例如3前行)。我非常确定这是有可能的,但是还没有实现整个目标。它不一定必须基于c列中的一个,这只是一个建议。

下面的小数据摘录用于解释,c和d列表示期望的结果: a b c d 16215 2 0 0 24848 4 0 0 24849 4 0 8 24850 4 0 8 24851 4 1 8 24852 6 0 0 24853 6 0 0 24854 8 0 0 24855 8 0 0 24856 8 0 16 25208 8 0 16 25932 8 1 16 28448 10 0 0 28449 10 0 0 28450 10 0 0

1 个答案:

答案 0 :(得分:1)

使用cumsumdiff创建分组密钥,然后在总计count大于3时找到每个分组的最后位置,然后将bfill与{ {1}}

limit