我正在尝试将函数应用于DataFrame,但是我一直收到此错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我要打的电话就是这个:
results['M1_Position'] = df.apply(instr_1(ratios, s_entry, s_exit))
和函数instr_1如下:
def instr_1(ratio, s_entry, s_exit):
if ratio > s_entry:
return 1
elif ratio < s_exit:
return -1
else:
return 0
我理解为什么会出现错误,但是我认为a.all()或a.any()在这种情况下都不会有帮助。如何在不使用for循环的情况下将函数分别应用于DataFrame的每一行(我希望将其向量化)?
答案 0 :(得分:0)
假设比率,s_entry和s_exit是数据框的列:
results['M1_Position'] = df.apply(lambda row: instr_1(row.ratio, row.s_entry, row.s_exit), axis=1)