我有以下 pandas 数据框作为输入:
df= pd.DataFrame({"C": [2,4,7,17,39], "D": [0,0,0,0,0]})
输出:
光盘
0 2 0
1 4 0
2 7 0
3 17 0
4 39 0
我想对 D 列应用一个函数,以便它获取当前的 C 值并减去先前的 C 值,并将其添加到先前的 D 值。 D 中的第一个元素必然是 0。
例如。对于第四行,列 D 值为 39 - 17 + 15 = 37
所需的输出如下所示:
光盘
0 2 0
1 4 2
2 7 5
3 17 15
4 39 37
我可以使用 for 循环遍历每一行并执行计算来获得所需的结果。我的实际数据框有几千行,计算涉及几列。我想知道是否有一个更有效、更简单的例程,我可以使用 apply 或 shift 或类似的东西,但不是 for 循环?
最佳答案
您可以对 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
关于python - 使用 apply 使用特定函数快速填充 pandas 数据框的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43441974/