问题
I want to make this loop significantly faster. It is calculating the move in a row for each feater. The function here is only applied to one column. Later, I am looping through each feature (df.columns) and applying this function.
def move_iar(df, feature):
lst=[]
prev_move_iar = 0
for move in df[feature]:
if np.isnan(move):
move_iar = 0
lst.append(move_iar)
prev_move_iar = move_iar
else:
if move == 0:
move_iar = prev_move_iar
lst.append(move_iar)
prev_move_iar = move_iar
elif (move >= 0 and prev_move_iar >= 0) or (move <= 0 and prev_move_iar <= 0):
move_iar = move + prev_move_iar
lst.append(move_iar)
prev_move_iar = move_iar
elif (move < 0 and prev_move_iar >= 0) or (move > 0 and prev_move_iar <= 0):
move_iar = move
lst.append(move_iar)
prev_move_iar = move_iar
return pd.DataFrame(lst, index=df.index, columns=[feature]).rename(columns={feature : feature + 'IAR'})
来源:https://stackoverflow.com/questions/58192507/how-to-parallelize-this-for-loop-or-make-it-faster-using-pandas-or-dask