Python 如何在pandas中创建逻辑,以基于其他列中的现有值创建新列?
在这个问题中,我试图理解何时应该根据“值”生成警报 如果前5个值高于10,则会创建警报。警报将继续保持激活状态,直到该值低于7.5。现在,一旦警报不再处于活动状态且达到前5个值高于10的阶段,则会再次创建警报 如何创建列以确定它是“警报”还是未使用熊猫 感谢所有的帮助Python 如何在pandas中创建逻辑,以基于其他列中的现有值创建新列?,python,python-3.x,pandas,Python,Python 3.x,Pandas,在这个问题中,我试图理解何时应该根据“值”生成警报 如果前5个值高于10,则会创建警报。警报将继续保持激活状态,直到该值低于7.5。现在,一旦警报不再处于活动状态且达到前5个值高于10的阶段,则会再次创建警报 如何创建列以确定它是“警报”还是未使用熊猫 感谢所有的帮助 Value Is Previous 5 Is the value greater Is it an Alert? Rolling than 7.5? G
Value Is Previous 5 Is the value greater Is it an Alert?
Rolling than 7.5?
Greater than 10?
11 No Yes
11 No Yes
11 No Yes
11 No Yes
11 Yes Yes Yes
11 Yes Yes
11 Yes Yes
8 No Yes
9 No Yes
11 No Yes
11 No Yes
11 No Yes
11 No Yes
11 Yes Yes
8 No Yes
9 No Yes
6 No No
11 No Yes
11 No Yes
11 No Yes
11 No Yes
11 Yes Yes Yes
NUM_PREV_ROWS = 5
PREV_5_THRESHOLD = 10.0
PREV_THRESHOLD = 7.5
df = pd.DataFrame([11,11,11,11,11,11,11,8,9,11,11,11,11,11,8,9,6,11,11,11,11,11], columns=['value'])
df['prev>10'] = df['value']>PREV_5_THRESHOLD
df['prev5>10'] = df['prev>10'].rolling(NUM_PREV_ROWS).sum()
df['prev>7.5'] = df['value']>PREV_THRESHOLD
alert = False
alert_series = []
for row in df.iterrows():
if row[1]['prev5>10']==NUM_PREV_ROWS:
alert = True
if row[1]['prev>7.5']==False:
alert = False
alert_series.append(alert)
df['alert'] = alert_series
print(df)
value prev>10 prev5>10 prev>7.5 alert
0 11 True NaN True False
1 11 True NaN True False
2 11 True NaN True False
3 11 True NaN True False
4 11 True 5.0 True True
5 11 True 5.0 True True
6 11 True 5.0 True True
7 8 False 4.0 True True
8 9 False 3.0 True True
9 11 True 3.0 True True
10 11 True 3.0 True True
11 11 True 3.0 True True
12 11 True 4.0 True True
13 11 True 5.0 True True
14 8 False 4.0 True True
15 9 False 3.0 True True
16 6 False 2.0 False False
17 11 True 2.0 True False
18 11 True 2.0 True False
19 11 True 3.0 True False
20 11 True 4.0 True False
21 11 True 5.0 True True