gpt4 book ai didi

python - 在 Pandas 中移动窗口以检查特定范围值

转载 作者:太空狗 更新时间:2023-10-30 02:53:37 24 4
gpt4 key购买 nike

我有我的时间序列数据,我想查看t+5和t-5的窗口中的数据,检查它是否在0.1和5之间然后需要将那个时间标记为1,同样如果同一窗口中的值大于 5,则应返回 2,否则返回零。

我试过了,请问有没有更有效的方法。

def my_func(arr,thres=5,lwthres=0.1):
arr=arr.astype(float)
if((arr[0]<thres) & (arr[1]<thres) & (arr[2]<thres) &(arr[3]<thres) &(arr[4]<thres)\
&(arr[5]<thres)&(arr[6]<thres)&(arr[7]<thres)&(arr[8]<thres)&(arr[9]<thres)\
& (arr[0]>=lwthres) & (arr[1]>=lwthres) & (arr[2]>=lwthres) &(arr[3]>=lwthres)\
& (arr[4]>lwthres) &(arr[5]>=lwthres)&(arr[6]>=lwthres)&(arr[7]>=lwthres)&(arr[8]>=lwthres)&(arr[9]>=lwthres)):
return 1
elif((arr[0]>=thres) & (arr[1]>=thres) & (arr[2]>=thres) &(arr[3]>=thres) &(arr[4]>=thres) &(arr[5]>=thres)&(arr[6]>=thres)&(arr[7]>=thres)&(arr[8]>=thres)&(arr[9]>=thres)):
return 2
else:
return 0

my_data=np.random.randint(5,size=100000)
my_df=pd.DataFrame(my_data)
tp=my_df.rolling(window=10,center=True).apply(lambda x:my_func(x))
df=pd.DataFrame()
df['value']=my_data
df['Type']=tp

最佳答案

我想像这样的东西应该更短,但想法是一样的:

def my_func(arr,thres=5,lwthres=0.1):
arr=arr.astype(float)
if(max(arr[0]<thres) & min(arr)>=lwthres):
return 1
elif(min(arr)>=thres)):
return 2
else:
return 0

关于python - 在 Pandas 中移动窗口以检查特定范围值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928253/

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