Python 如何用另一列和同一列的上一个值之和填充一列?
我正在用Python构建一个财务模型。为此,我需要计算“税收结转”。该头寸由“EBT”加上期的“税收结转”组成。在第一个期间,“税收结转”等于“EBT” 我目前正试图用df.shift()函数解决这个问题: df2["carry forward"] = df2["EBT"] + df2["carry forward"].shift(periods=1, fill_value=0) df2[“结转”]=df2[“EBT”]+df2[“结转”].移位(周期=1,填充值=0) 然而,这并不能正常工作。虽然我在前两次迭代(2021、2022)中得到了正确的结果,但从第三次迭代开始,它就不再工作了 EBT carry forward year 2021 -377893.353711 -377893.353711 2022 -282754.978037 -660648.331748 2023 -224512.990469 -507267.968506 2024 -167696.637680 -392209.628149 EBT结转 年 2021 -377893.353711 -377893.353711 2022 -282754.978037 -660648.331748 2023 -224512.990469 -507267.968506 2024 -167696.637680 -392209.628149Python 如何用另一列和同一列的上一个值之和填充一列?,python,pandas,Python,Pandas,我正在用Python构建一个财务模型。为此,我需要计算“税收结转”。该头寸由“EBT”加上期的“税收结转”组成。在第一个期间,“税收结转”等于“EBT” 我目前正试图用df.shift()函数解决这个问题: df2["carry forward"] = df2["EBT"] + df2["carry forward"].shift(periods=1, fill_value=0) df2[“结转”]=df2[“EBT”]+df2[“结转”].移位(周期=1,填充值=0) 然而,这并不能正常工作。
如上表所示,2023年的结转是EBT 2023和2022的总和,这是不正确的。我不能完全理解我的错误,因为我不确定Python到底是如何在数据帧中填充列的。在我看来,Python并不是一行一行地填充数据帧,而是同时填充数据帧。这就是问题所在吗?如果是这样,我该如何应对?有没有比df.shift()函数更好的方法来执行此任务?我假设您实际上是在为
结转
列查找EBT
的累计和
用于输入:
EBT carry_forward
year
2021 -377893.353711 0
2022 -282754.978037 0
2023 -224512.990469 0
2024 -167696.637680 0
df["carry_forward"] = df["EBT"].cumsum()
df
EBT carry_forward
year
2021 -377893.353711 -3.778934e+05
2022 -282754.978037 -6.606483e+05
2023 -224512.990469 -8.851613e+05
2024 -167696.637680 -1.052858e+06
与:
EBT carry_forward
year
2021 -377893.353711 0
2022 -282754.978037 0
2023 -224512.990469 0
2024 -167696.637680 0
df["carry_forward"] = df["EBT"].cumsum()
df
EBT carry_forward
year
2021 -377893.353711 -3.778934e+05
2022 -282754.978037 -6.606483e+05
2023 -224512.990469 -8.851613e+05
2024 -167696.637680 -1.052858e+06
您将获得:
EBT carry_forward
year
2021 -377893.353711 0
2022 -282754.978037 0
2023 -224512.990469 0
2024 -167696.637680 0
df["carry_forward"] = df["EBT"].cumsum()
df
EBT carry_forward
year
2021 -377893.353711 -3.778934e+05
2022 -282754.978037 -6.606483e+05
2023 -224512.990469 -8.851613e+05
2024 -167696.637680 -1.052858e+06
没问题@母马