我将以下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循环?
答案 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