Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用另一列和同一列的上一个值之和填充一列?_Python_Pandas - Fatal编程技术网

Python 如何用另一列和同一列的上一个值之和填充一列?

Python 如何用另一列和同一列的上一个值之和填充一列?,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) 然而,这并不能正常工作。

我正在用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.628149
如上表所示,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

没问题@母马