tr Atr
0 0.00276 0.00276
1 0.01455 NaN
2 0.00895 NaN
3 0.00816 NaN
4 0.00596 NaN
5 0.00816 NaN
6 0.00844 NaN
7 0.01150 NaN
8 0.00473 NaN
9 0.00502 NaN
請如何將此公式應用于每個 tr
Atr = (prev_Atr * (14 - 1) tr) / 14
我想做的是
df["Atr"] = lambda x, y: (x * (14 -1) y)/14
但我不知道如何分配
x = prev_Atr & y = tr
uj5u.com熱心網友回復:
for x in range(len(df)-1): df['Atr'][x 1:] = (df['Atr'][x]*(14-1) df['tr'][x 1])/14
我希望這有幫助。我使用了一個 for 回圈并偏移了一個分配的單元格。
uj5u.com熱心網友回復:
apply你不是在做遞回計算嗎?下一行的值取決于您必須計算的當前行的值。
一個簡單的for回圈將完成這項作業:
tr, atr = df[["tr", "Atr"]].to_numpy().T
for i in range(1, len(atr)):
atr[i] = (atr[i-1] * 13 tr[i]) / 14
df["Atr"] = atr
它干凈、易讀并且與您的公式具有相同的形式。性能不是最快的,但如果這對您來說太慢,請查看numbaJIT 編譯代碼段。
uj5u.com熱心網友回復:
看來您正在尋找滾動計算。但它不是一個簡單的 sum() 之類的。你可以通過一個簡單的 for 回圈來實作你想要的:
for i in df.index[1:]:
df['Atr'].iloc[i] = (df['Atr'].iloc[i-1]*13 df['tr'].iloc[i])/14
列印(df):
tr Atr
0 0.00276 0.002760
1 0.01455 0.003602
2 0.00895 0.003984
3 0.00816 0.004282
4 0.00596 0.004402
5 0.00816 0.004671
6 0.00844 0.004940
7 0.01150 0.005408
8 0.00473 0.005360
9 0.00502 0.005336
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/516047.html
上一篇:如何回圈遍歷計算機視覺輸出陣列
