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

标签 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 值应该被过滤。

谢谢!

最佳答案

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

关于python - 当对前一个值进行迭代求和时,有没有办法在 pandas 的 apply 函数中使用前一行值?或者是一种有效的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56738691/

相关文章:

python - 如何在带有附加图表的 matplotlib 表中使用逗号分隔符格式化值?

python:转换损坏的xls文件

python - python中的莱文森算法

Python - "client_id"丢失。怎么解决?

python - 更改 Pandas 条形图中的错误条标记(Caplines)

python - 如何根据条目的长度过滤 Pandas 数据框

python-3.x - 如何使用 IQR 从 DataFrame 中删除异常值?

python - 定时器中断线程python

python - 在python中计算直方图峰值

python - Pandas 数据框添加 2 个数据框