我有以下DataFrames:熊貓 - 的Python:應用(),並且如果/則的邏輯
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)]})
我想執行與芹菜()和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
)
這是返回: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
)
最後一點小推動形式,你們將非常感激。
如果結果是'[125, NaN,125,80 ,150,8,NaN]或[125,NaN,80,8,150,8,NaN] – 3novak
@ 3novak:是的,你說得對。編輯 –