使用apply使用特定函数快速填充pandas数据框的列?

时间:2017-04-16 20:47:13

标签: python pandas jupyter-notebook

我将以下pandas数据帧作为输入:

C D 0 2 0 1 4 0 2 7 0 3 17 0 4 39 0

输出: C D 0 2 0 1 4 2 2 7 5 3 17 15 4 39 37

我想将一个函数应用于D列,使其获取当前的C值并减去之前的C值并将其添加到之前的D值。 D中的第一个元素必须为0.

实施例。对于第四行,列D值将是39-17 + 15 = 37

所需的输出如下所示:

"repository" : { "type" : "git", "url" : "http://github.com/npm/express.git" }

我可以使用遍历每一行的for循环来获得所需的结果并执行计算。我的实际数据帧是几千行,计算得出几列。我想知道是否有一个更有效,更简单的例程,我可以使用apply或shift或类似但一个for循环?

1 个答案:

答案 0 :(得分:2)

您可以对C列的差异(当前 - 上一个)执行cumsum

df['D'] = df['C'].diff().fillna(0).cumsum()
df

#    C     D
#0   2   0.0
#1   4   2.0
#2   7   5.0
#3  17  15.0
#4  39  37.0