定义PythonApply函数,该函数可以访问前面的行值并使用它们进行计算
我想迭代df并计算a列的值,这需要b列和c列的值。公式如下:定义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
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