定义PythonApply函数,该函数可以访问前面的行值并使用它们进行计算

定义PythonApply函数,该函数可以访问前面的行值并使用它们进行计算,python,function,pandas,lambda,apply,Python,Function,Pandas,Lambda,Apply,我想迭代df并计算a列的值,这需要b列和c列的值。公式如下: 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 您需要以下功能: In

我想迭代df并计算a列的值,这需要b列和c列的值。公式如下:

    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

您需要以下功能:

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

请提供一个示例输入数据5-7行和预期输出我添加了输入和预期输出,还更新了我想要的计算。很抱歉给你带来了困惑。谢谢谢谢你的回复,很抱歉我没有把我的全部功能放在上一篇文章里。我更新了函数,b列的值实际上需要当前行a列的值进行计算。@user5025141,源数据帧是什么-我的意思是
b
column@user5025141,我已经更新了我的答案。请检查,对不起,b列没有源数据。我只知道df.b[0],b列是一步一步计算出来的。
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