计算值在滚动窗口中满足条件的次数

2022-07-06 11:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

In [4]: data = pd.DataFrame([[9,4,16],[5,4,2],[1,3,13],[26,7,3]])               

In [5]: data                                                                    
Out[5]: 
    0  1   2
0   9  4  16
1   5  4   2
2   1  3  13
3  26  7   3

我想计算第0列中大小为n的滚动窗口中的值大于第1列中的值的次数。在这种情况下,包含值9、5、1、26(大小4)的窗口将产生数字3,因为9、5和26而不是1大于4。类似地,如果使用列1上的滚动窗口4应用于列2,则该值将为0,因为4、4、3、7都不大于16


Tags: indataframedata情况数字out次数pd
1条回答
网友
1楼 ·

你可以这样做

但是,我不确定您想要什么输出,因为输出将是如图所示的系列&;在实际达到滚动窗口值之前,您将拥有NaN

def func(arr):
    count = 0
    for i in arr : 
        if i > len(arr) : 
            count = count + 1
    return count
data[0].rolling(4).apply(lambda x: func(x),raw=False)

输出

0    NaN
1    NaN
2    NaN
3    3.0
data[0].rolling(2).apply(lambda x: func(x),raw=False)

将导致

0    NaN
1    2.0
2    1.0
3    1.0

热门问题