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

标签 python pandas jupyter-notebook

我有以下 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/

相关文章:

python - 如何根据列名称过滤数据框的内容

python - jupyter notebook 停止 SSL 错误

用于 Jupyter 的 Julia Kernel 崩溃

python - 可散列的,不可变的

python - python中函数如何处理全局对象?执行顺序是什么?

python - 来自代码的游戏 map

Python Pandas to_sql,如何创建带有主键的表?

python - 检查两个 df 是否相同模式并在 pandas 中使用 groupby

jupyter-notebook - 如何在离线模式下更新绘图(Jupyter笔记本)

Python:为什么我的函数不显示解释器中返回的内容?