[英]Python Retain function. Use value from previous row in calculation
[英]Define python apply function which can access previous row values and use them for calculation
我想遍歷 df 並計算需要列 b 和 c 值的列 a 值。 公式是這樣的:
for i in range(1, len(df)):
df.a[i] = df.b[i-1]*(2**df.c[i])
df.b[i] = df.a[i]*0.5 + 1
我想使用 apply func 或 lambda func 進行更快的計算,但是我不知道在 python 中定義 apply 函數時,如何訪問前一行的值?
示例輸入 (df.a[0] df.b[0] df.c) 和預期輸出 df.a: df
a b c
0 1 1
4 3 2
24 13 3
208 105 4
你需要shift()函數:
In [9]: df = pd.DataFrame({'b': [1,3,13,105], 'c': [1,2,3,4]})
In [10]: df
Out[10]:
b c
0 1 1
1 3 2
2 13 3
3 105 4
In [11]: df['a'] = (df.b.shift()*(2**df.c)).fillna(0)
In [12]: df
Out[12]:
b c a
0 1 1 0
1 3 2 4
2 13 3 24
3 105 4 208
In [13]: df.b = df.a*0.5+1
In [14]: df
Out[14]:
b c a
0 1 1 0
1 3 2 4
2 13 3 24
3 105 4 208
In [15]: df[['a','b','c']]
Out[15]:
a b c
0 0 1 1
1 4 3 2
2 24 13 3
3 208 105 4
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.