繁体   English   中英

当迭代求和前一个值时,有没有办法在 Pandas 的 apply 函数中使用前一个行值?或者一种有效的方法?

[英]Is there a way to use previous row value in pandas' apply function when previous value is iteratively summed ?or an efficient way?

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

鉴于下面的数据框:

   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 值。

谢谢!

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
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM