Python 如果满足条件但在列中指定了条件,则为滚动总和

Python 如果满足条件但在列中指定了条件,则为滚动总和,python,pandas,numpy,vectorization,rolling-sum,Python,Pandas,Numpy,Vectorization,Rolling Sum,我正在尝试做1000行的滚动求和。我想对每一行的ClosePrice在ClosePrice\u low和ClosePrice\u high之间的所有行及其上方的999进行求和 例如: 滚动计数1000:检查行0:1000,如果介于0.0000189375和0.0000185625之间,则求和(也就是说,在第1000行和求和ClosePrice上,查找0到1000之间的所有行,这些行在ClosePrice\u low和ClosePrice\u high之间) 滚动计数1001:检查行1:1001,

我正在尝试做1000行的滚动求和。我想对每一行的ClosePrice在ClosePrice\u low和ClosePrice\u high之间的所有行及其上方的999进行求和

例如:

滚动计数1000:检查行0:1000,如果介于0.0000189375和0.0000185625之间,则求和(也就是说,在第1000行和求和ClosePrice上,查找0到1000之间的所有行,这些行在ClosePrice\u low和ClosePrice\u high之间)

滚动计数1001:检查行1:1001,如果介于0.0000189476和0.0000185724之间,则求和

执行以下操作无效:

tempdf['ClosePrice'][np.where(tempdf['ClosePrice'] < tempdf['ClosePrice_high'] & \
    tempdf['ClosePrice'] > tempdf['ClosePrice_low'],tempdf['ClosePrice'],0)].rolling(1000).sum()

在我正确理解问题的情况下:

df['cpl'] = df.ClosePrice_low.rolling(1000).max()
df['cph'] = df.ClosePrice_high.rolling(1000).min()
df = df[(df.ClosePrice <= df.cph) & (df.ClosePrice >= df.cpl)]
df.drop(['cpl', 'cph'], inplace=True)
df.sum()
df['cpl']=df.ClosePrice_low.rolling(1000.max)()
df['cph']=df.ClosePrice_high.rolling(1000.min)()
df=df[(df.ClosePrice=df.cpl)]
drop(['cpl','cph'],inplace=True)
df.sum()

这一点尚不清楚。您的意思是,对于第1000行,您希望在第1000行中查找从0到1000的所有介于ClosePrice\u low和ClosePrice\u high之间的行吗?或各行ClosePrice在ClosePrice\u low和ClosePrice\u high之间的所有行?各行ClosePrice在ClosePrice\u low和ClosePrice\u high之间的所有行及其上方的999
df['cpl'] = df.ClosePrice_low.rolling(1000).max()
df['cph'] = df.ClosePrice_high.rolling(1000).min()
df = df[(df.ClosePrice <= df.cph) & (df.ClosePrice >= df.cpl)]
df.drop(['cpl', 'cph'], inplace=True)
df.sum()