簡體   English   中英

定義可以訪問前一行值並使用它們進行計算的python apply函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM