首页 > 解决方案 > Python Pandas 使用先例行值更新行中的值

问题描述

我必须使用先例行值来计算新值。我有很多行,我不想使用循环,因为它需要很多时间,我尝试使用 shift 但我认为它对我没有帮助,或者我可能不知道如何使用它。

在这里,关于我想要做什么的小例子。

我有一个数据框

df = pd.DataFrame({'A': [4,2,3,2], 'B': [2, 3,4,5]})  
In [273]: df                                                                                   
Out[273]:  
   A  B   
0  4  2  
1  2  3  
2  3  4 
3  2  5  

我想创建新列'C':

In [273]: df Out[273]: A B C 0 4 2 4.0 1 2 3 7.0 2 3 4 11.0 3 2 5 16.0

我真的不想使用循环或应用,所以如果有另一种快速的方法,我真的很想知道它。

非常感谢

标签: pythonpandasdiffshift

解决方案


您正在寻找累积除法,因此累积 prod 方法的逆,您可以使用.cumprod()method.

唯一的技巧是你想从 A 列的第一个值开始而不是 B 所以你需要乘以 A 的第一个值和 B 的第一个值

df['C'] =  1/df['B'].cumprod()*df.loc[0,'B'] * df.loc[0,'A']

#   A   B   C
#0  4   2   4.000000
#1  2   3   1.333333
#2  3   4   0.333333
#3  2   5   0.066667

推荐阅读