我的输入看起来像下面的df。
我需要按列(A,B)分组,计算每个组中连续零的数量/长度,并写入新列“Zero_count”
Input:
A B DATE hour measure
A10 1 1/1/2014 0 0
A10 1 1/1/2014 1 0
A10 1 1/1/2014 2 0
A10 1 1/1/2014 3 0
A10 2 1/1/2014 4 0
A10 2 1/1/2014 5 1
A10 2 1/1/2014 6 2
A10 3 1/1/2014 7 0
A11 1 1/1/2014 8 0
A11 1 1/1/2014 9 0
A11 1 1/1/2014 10 2
A11 1 1/1/2014 11 0
A11 1 1/1/2014 12 0
A12 2 1/1/2014 13 1
A12 2 1/1/2014 14 3
A12 2 1/1/2014 15 0
A12 4 1/1/2014 16 5
A12 4 1/1/2014 17 0
A12 6 1/1/2014 18 0
我尝试使用“groupby”技术来获取组,但我正在寻找组内连续零计数。我尝试使用lambda函数,但它计数零的总数,而我对重复连续零感兴趣。我希望我的输出如下所示:
Output
A B DATE hour measure Consec_zero_count
A10 1 1/1/2014 0 0 4
A10 1 1/1/2014 1 0 4
A10 1 1/1/2014 2 0 4
A10 1 1/1/2014 3 0 4
A10 2 1/1/2014 4 0 1
A10 2 1/1/2014 5 1 0
A10 2 1/1/2014 6 2 0
A10 3 1/1/2014 7 0 1
A11 1 1/1/2014 8 0 2
A11 1 1/1/2014 9 0 2
A11 1 1/1/2014 10 2 0
A11 1 1/1/2014 11 0 2
A11 1 1/1/2014 12 0 2
A12 2 1/1/2014 13 1 0
A12 2 1/1/2014 14 3 0
A12 2 1/1/2014 15 0 1
A12 4 1/1/2014 16 5 0
A12 4 1/1/2014 17 0 1
A12 6 1/1/2014 18 0 1
任何线索将不胜感激。提前感谢!
3条答案
按热度按时间lx0bsm1f1#
通过按
ne
(!=
)将shift
艾德值与cumsum
进行比较,为连续值的唯一组创建帮助器Series
。然后将groupby
与transform
和size
进行比较。最后一个筛选器值仅适用于0
与numpy.where
:4zcjmb1e2#
与@jezrael的回答相似,但逻辑略有不同:
i5desfxk3#
输出: