我有下面的代码,它可以根据“A”列的滚动窗口计算将数据帧列“标志”更新为是或否(“A”中的滚动窗口值应具有最小值> 100和最大值<200 to get yes value, otherwise value is no:
df['flag'] = np.where(
((df['A'].rolling(60).apply(lambda s: s.min()))> 50) &
((df['A'].rolling(60).apply(lambda s: s.max()))< 100)
,'yes', 'no')
现在我只需要更改它,这样如果不满足条件,它就不会更新 df['flag'] 值,而不是写“no”。或者也许有一种完全不同的方法来完成同样的事情?
您可以使用
loc
方法来达到
df = pd.DataFrame({
'A': np.random.randint(50, 150, size=200)
})
df['flag'] = ''
mask = ((df['A'].rolling(60).apply(lambda s: s.min()) > 100) &
(df['A'].rolling(60).apply(lambda s: s.max()) < 200))
df.loc[mask, 'flag'] = 'yes'