python - 计算python中每个非零簇后面的零的数量

标签 python pandas dataframe

我想计算数据帧中每批非零数字之后的零数量。例如,请参阅此数据框。第一个非零簇之后的 A 列中的零数量为 2。然后在下一个簇之后,零的数量为 4,最后一个簇之后的零数量为 2。因此输出应为 [2,4 ,2]。

Time A  B  C
60   5  4  3
120  4  5  2
180  5  5  5
240  0  0  0
300  0  0  0 
360  6  7  8
420  5  6  7
480  0  0  0
540  0  0  0 
600  0  0  0
660  0  0  0
720  5  6  6
780  5  6  6
840  0  0  0
900  0  0  0 

最佳答案

使用itertools.groupby :

>>> from itertools import groupby
>>> [len(list(group)) for key, group in groupby(df.A) if key == 0]
[2, 4, 2]

元素本身用于分组,这意味着每个不同的元素将开始一个新的组;因此,每当 0 启动一个组作为键时,我们就会将(惰性)组的长度作为结果。

关于python - 计算python中每个非零簇后面的零的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67047289/

相关文章:

python - 高效交换numpy数组中的元素

python - 在Python中Merge()两个Dataframe,查看ID的重复情况

Python OpenCV : Detecting a general direction of movement?

python 3.4 : Pandas DataFrame not responding to ordered dictionary

python - 在上采样数据帧时拆分持续时间

python - 使用opencv,如何去除透明图像中的非对象?

python - pandas:两列的条件滚动和

python - DataFrame行和前一行计算

python - 如何提高 python 数据帧中平均计算的性能

python-3.x - 如何使用IQR从DataFrame中删除异常值?