在Pandas数据帧中保留大小为> = k的1个块 [英] Leave blocks of 1 of size >= k in Pandas data frame

查看:61
本文介绍了在Pandas数据帧中保留大小为> = k的1个块的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要离开块> = k'1'.所有其他块"1"应转换为零.例如, k = 2 :

I need to leave block >= k of '1'. All other block of '1' should be transformed to zero. For example, k=2:

df= 
    a  b
0   1  1
1   1  1
2   0  0
3   1  0
4   0  0
5   1  0
6   0  0
7   1  0
8   0  0
9   1  1
10  1  1
11  1  1
12  0  0
13  0  0
14  1  0
15  0  0
16  1  1
17  1  1
18  0  0
19  1  0

其中a列是原始序列,而b列是所需序列.

where the column a is the original sequence, and the column b is the desired.

推荐答案

z = df.a.eq(0)
g = z.cumsum().mask(z, -1)

k = 2
df['b'] = df.a.groupby(g).transform('size').ge(k).mask(z, 0)

    a  b
0   1  1
1   1  1
2   0  0
3   1  0
4   0  0
5   1  0
6   0  0
7   1  0
8   0  0
9   1  1
10  1  1
11  1  1
12  0  0
13  0  0
14  1  0
15  0  0
16  1  1
17  1  1
18  0  0
19  1  0

这篇关于在Pandas数据帧中保留大小为> = k的1个块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆