Python 计算值在滚动窗口中满足条件的次数
我想计算第0列中大小为n的滚动窗口中的值大于第1列中的值的次数。在这种情况下,包含值9、5、1、26(大小4)的窗口将产生数字3,因为9、5和26而不是1大于4。类似地,如果使用列1上的滚动窗口4应用于列2,则该值将为0,因为4、4、3、7中没有一个大于16 但是,我不确定您想要什么输出,因为输出将是如图所示的系列&在实际达到滚动窗口值之前,您将拥有NaNPython 计算值在滚动窗口中满足条件的次数,python,pandas,rolling-computation,Python,Pandas,Rolling Computation,我想计算第0列中大小为n的滚动窗口中的值大于第1列中的值的次数。在这种情况下,包含值9、5、1、26(大小4)的窗口将产生数字3,因为9、5和26而不是1大于4。类似地,如果使用列1上的滚动窗口4应用于列2,则该值将为0,因为4、4、3、7中没有一个大于16 但是,我不确定您想要什么输出,因为输出将是如图所示的系列&在实际达到滚动窗口值之前,您将拥有NaN In [4]: data = pd.DataFrame([[9,4,16],[5,4,2],[1,3,13],[26,7,3]])
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
输出
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)
将导致
data[0].rolling(2).apply(lambda x: func(x),raw=False)
谢谢我意识到我正在寻找的是一种在滚动中迭代值的方法,以便我可以将它们与特定行中的值进行比较,并计算它们比该值大多少倍。不幸的是,滚动中的值的迭代尚未实现。
data[0].rolling(2).apply(lambda x: func(x),raw=False)
0 NaN
1 2.0
2 1.0
3 1.0