我一直在寻找一种方法来用矢量化替换 itterrows 并出现空白。我有这段代码,我相信使用 itterows 可以正常工作,这将永远持续下去。
sm_state = 0
fst_state = 0
time = 0
for index, row in df.iterrows():
if row['Current'] < -5 or row['Current'] > 5 or row[active] == 0:
sm_state = 0
fst_state = 0
time = 0
else:
sm_state = 1
fst_state = 1
time = row['ElapsedTime']
if row['ElapsedTime'] - time >= smooth_time and sm_state == 1:
sm_state = 2
if row['ElapsedTime'] - time >= fast_time and fst_state == 1:
fst_state = 2
df.loc[index,'sm_timing'] = sm_state
df.loc[index,'fst_timing'] = fst_state
return df
总而言之,这是在当前为 ~0 且 active = 1 时存储该点的经过时间(第一次为真)并且新列应为 1。然后,如果这些条件在“时间”内保持为真,则新列中的值更改为 2。如果 current 超出 0,则新列应返回 0 并再次开始查找 current == 0 和 active == 1。
非常感谢任何帮助或建议。