迭代累加先前值时,是否有一种方法可以在熊猫的apply函数中使用先前行值?还是一种有效的方法?

时间:2019-06-24 14:26:53

标签: python pandas dataframe for-loop apply

我有一个带有一些列的数据框,我想以一种有效的方式应用以下转换。

给出以下数据框:

   C    D
 ===========
  Nan  10
  0  22 
  2  280
  4  250
  6  270

应该以这样的方式进行转换,我可以获得以下输出:

   C    D
 ===========
  Nan  10
  0  22 
  2  280
  6  252
  12 276 

请注意:

C [i] = C [i] + C [i-1] + ... + C [ 0]

D [i] = D [i] + C [i-1]

应过滤NaN值。

谢谢!

2 个答案:

答案 0 :(得分:1)

IIUC,您需要:

df['C'] = df['C'].add(df['C'].shift(1).fillna(0))
df['D'] = df['D'].add(df['C'].shift(1).fillna(0))

输出:

       C       D
0   NaN      10.0
1   0.0      22.0
2   2.0     280.0
3   6.0     252.0
4   10.0    276.0

答案 1 :(得分:1)

df['C'] = df['C'].cumsum()
df['D'] = df['D'].add(df['C'].shift(1).fillna(0))

输出:

      C      D
0   NaN      10.0
1   0.0      22.0
2   2.0     280.0
3   6.0     252.0
4   12.0    276.0