Python 数据帧平衡未更新

Python 数据帧平衡未更新,python,pandas,dataframe,Python,Pandas,Dataframe,我有以下代码: import pandas as pd df = pd.DataFrame() df["Dates"] = DatesforAccrual df["No of Days"] = NoofDaysinAccrual df["AccrualCoupon"] = AccruedCoupon df.loc[0, 'AccrualYield'] = 0 df.loc[0, "Balance"] = 500

我有以下代码:

import pandas as pd

df = pd.DataFrame()

df["Dates"] = DatesforAccrual
df["No of Days"] = NoofDaysinAccrual
df["AccrualCoupon"] = AccruedCoupon
df.loc[0, 'AccrualYield'] = 0

df.loc[0, "Balance"] = 500


for i in range(1, len(df)):
    df.loc[i, 'AccrualYield'] = df.loc[i-1,'Balance']*df.loc[i+0,'No of Days']* 0.1 / 360
    


for i in range(1, len(df)):
    df.loc[i, 'Balance'] = df.loc[i-1,'Balance']+df.loc[i+0,'AccrualCoupon']- df.loc[i+0,'AccrualYield']

                                         
print(df)
结果如下:

                 Dates  No of Days  AccrualCoupon  AccrualYield  Balance
0     March 15th, 2020           0       0.000000      0.000000   500.00
1    August 15th, 2020         150       2.083333     20.833333   481.25
2  February 15th, 2021         180       2.500000           NaN      NaN
3       May 19th, 2021          94       1.305556           NaN      NaN

仅为1行计算了应计收益率和余额的值。有人能帮我把剩下的行相应地更新一下吗。预期产量如下所示


                 Dates  No of Days  AccrualCoupon  AccrualYield  Balance
0     March 15th, 2020           0       0.000000      0.000000   500.00
1    August 15th, 2020         150       2.083333     20.833333   481.25
2  February 15th, 2021         180       2.500000         24.06   459.69
3       May 19th, 2021          94       1.305556         12.00   448.99


您真的可以实现这种逻辑,而无需循环。也许可以添加一个示例数据来说明您试图实现的目标。从第2行开始的应计收益率将根据以前的日期余额进行计算。从第2行开始的余额将是(上一行的余额+同一行的应计收益率-同一行的应计收益率)。上面分享的预期输出我并没有认真考虑过这一点,但是通过
i+0
索引东西是很奇怪的。你是说+不是零?好的,我现在读代码了。问题是,您正在为循环分别执行
操作。在第一个循环中,第一次迭代-它将在第一行(索引0)中找到
余额
的值,因此它将能够填充
应计收益
。但是从第二次迭代开始,您将在前一行中没有
Balance
的值。只需将两个属性放在同一个for循环中(首先是
应计收益率
。然后是
余额
)@vmg。非常感谢你的宝贵帮助。它正在按预期工作