我有以下数据帧:
example = pd.DataFrame({"dirr":[1,0,-1,-1,1,-1,0],
"value": [125,130,80,8,150,251,18],
"result":[np.NaN for _ in range(7)]})
我想用cummin()和cummax()对其执行以下操作:
^{pr2}$返回:error: invalid syntax
。在
有人能帮我把那个弄直吗?在
这将是预期的输出:
example = pd.DataFrame({"dirr":[1,0,-1,-1,1,-1,0],
"value": [125,130,80,8,150,251,18],
"result":[125, NaN, 80, 8, 150, 8, NaN]})
编辑:
因此,根据@su79eu7k的回答,以下函数可以:
def calc(x):
if x['dirr'] == 1:
return np.diag(example["value"].cummax())
elif x['dirr'] == -1:
return np.diag(example["value"].cummin())
else:
return np.nan
我应该可以把它推到lambda中,但仍然因为语法错误而受阻。。。我还是看不见?在
example["result"]=example.apply(lambda x : np.diag(x["value"].cummax()) if x["dirr"]==1
else np.diag(x["value"].cummin()) if x["dirr"]==-1
else NaN if x["dirr"]==0
)
最后一个小小的推动形式你们将不胜感激。在
我认为@3novak的解决方案既简单又快速。但如果您真的想使用
apply
函数我认为用单独的行代替apply是最有意义的。如果使用apply函数,则应该创建一个单独的函数并将其传递,而不是生成一个三行lambda。在
下面是另一种
^{pr2}$apply
方法。在全是裸体
定时
相关问题 更多 >
编程相关推荐