I have the following DataFrames:
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()对其执行以下操作:
example["result"].apply(lambda x : x= example["value"].cummax() if example["dirr"]==1
else x= example["value"].cummin() if example["dirr"]==-1
else x= NaN if if example["dirr"]==0
)
这是返回结果:
错误:语法无效
。有谁能帮我搞清楚这个问题吗?预期输出为: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
)
希望你们最后能给个小提示,这对我们来说将受益匪浅。
[125, NaN, 80, 8, 150, 8, NaN]
还是[125, NaN, 125, 80, 150, 8, NaN]
? - 3novak