gpt4 book ai didi

python - 识别具有公差的连续真值 block

转载 作者:行者123 更新时间:2023-12-05 06:37:34 24 4
gpt4 key购买 nike

我有一个 boolean 型 pandas DataFrame:

w=pd.DataFrame(data=[True,False,True,True,True,False,False,True,False,True,True,False,True])

我正在尝试识别 True 值的 block ,它们至少长 N:

我可以通过

N=3.0
b = w.ne(w.shift()).cumsum() *w
m = b[0].map(b[0].mask(b[0] == 0).value_counts()) >= N

它工作正常并返回

m
0 False
1 False
2 True
3 True
4 True
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False

现在,我需要做同样的事情,但要允许在确定 block 时有一些容差。所以我想识别所有长度至少为 N 的 block ,但允许 M 值(任意放置在 block 内)为 False

对于例子w,N=3,M=1应该是,

w
0 True
1 False
2 True
3 True
4 True
5 False
6 False
7 True
8 False
9 True
10 True
11 False
12 True

不同于以往的结果:

desidered=
0 **True**
1 **True**
2 True
3 True
4 True
5 False
6 False
7 True
8 ** True **
9 True
10 True
11 **True**
12 True

最佳答案

我相信您可以通过 ~ 反转 m 并通过 最后链接两个条件来重用解决方案:

N = 3.0
M = 1
b = w.ne(w.shift()).cumsum() *w
m = b[0].map(b[0].mask(b[0] == 0).value_counts()) <= N

w1 = ~m
b1 = w1.ne(w1.shift()).cumsum() * w1
m1 = b1.map(b1.mask(b1 == 0).value_counts()) == M

m = m | m1

print (m)
0 True
1 True
2 True
3 True
4 True
5 False
6 False
7 True
8 True
9 True
10 True
11 True
12 True
Name: 0, dtype: bool

关于python - 识别具有公差的连续真值 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47473240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com