我有这个数据帧:
In[1]df = pd.DataFrame([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]])
In[2]df
Out[2]:
0 1 2 3 4
0 1 2 3 4 5
1 6 7 8 9 10
2 11 12 13 14 15
3 16 17 18 19 20
4 21 22 23 24 25
我需要做到:
根据上述标准,生成的数据帧df1的大小应与其中的真或假大小相同:
^{pr2}$我想数据帧.滚动.应用()使用函数可能是解决方案,但具体如何解决呢?在
在布尔数据帧上使用
sum
。在您可以通过屏蔽na的位置来确定确切的请求输出。在
^{pr2}$你需要-
输出
^{pr2}$说明
将其分解为每行一次取3列-
检查元组列表中的每个元素,如果元组中的所有元素都大于10,则输出
True
连接
[np.nan, np.nan]
以匹配输出。希望有帮助。在使用
rolling()
是正确的。但是,您必须记住,因为rolling()
用新值替换了窗口末尾的值,所以您不能仅仅用True
来标记窗口,当条件不适用时,您还会得到False
下面是使用示例数据帧并执行所需转换的代码:
现在,定义一个以窗口为参数并返回条件是否满足的函数
^{pr2}$我把门槛硬编码为10。因此,如果在任何窗口中大于10的值的数目大于或等于2,则最后一个值将被1(表示真),否则它将被-1(表示假)替换。在
如果您想将threshold参数保留为变量,那么请查看this答案以将它们作为参数传递。在
现在在滚动窗口上应用这个函数,使用窗口大小为3,轴1,另外,如果您不想要NaN,那么也可以在参数中将min_periods设置为1。在
将输出生成为
相关问题 更多 >
编程相关推荐