Python 当使用T组数据计算上一行值时,如何在数据帧中使用上一行值

Python 当使用T组数据计算上一行值时,如何在数据帧中使用上一行值,python,pandas,lambda,iteration,apply,Python,Pandas,Lambda,Iteration,Apply,我有这样的数据框架: 我需要获得这样的数据帧: 开始数据帧: 第一列是合同id 第二列是日期 第三列为预付款系数(EAR) 第4栏为合同付款 结果数据帧: 第五列是EAR。它等于Ear_coef(t)*债务与Ear(t-1) 第六列是带耳的债务。它将债务与EAR(t-1)+合同(t)+EAR(t)相等 Ear和债务在第一个日期分别等于0和债务 我曾试图用apply解决这样的任务。但我没有成功,因为我需要使用之前的值,这也是计算出来的。 这个答案对我没有帮助 因为我有几百个身份证 我将

我有这样的数据框架:

我需要获得这样的数据帧:

开始数据帧:

  • 第一列是合同id
  • 第二列是日期
  • 第三列为预付款系数(EAR)
  • 第4栏为合同付款
结果数据帧:

  • 第五列是EAR。它等于Ear_coef(t)*债务与Ear(t-1)
  • 第六列是带耳的债务。它将债务与EAR(t-1)+合同(t)+EAR(t)相等
Ear和债务在第一个日期分别等于0和债务

我曾试图用apply解决这样的任务。但我没有成功,因为我需要使用之前的值,这也是计算出来的。 这个答案对我没有帮助 因为我有几百个身份证

我将非常感谢您的帮助。

您正在寻找帮助

但是,它不容易用于
.apply()
。解决办法是:

df['EAR']=df['EAR_coef']*df['Debt with EAR']].shift(1)

你可能需要最后一篇专栏文章,但我不确定你的公式是什么?这似乎是永无止境的。

你的方法不起作用,因为你不知道df(带耳朵的债务)的所有预测水平。例如,对于id 111,使用方法df['EAR']=[NaN,20,NaN]。这是不正确的。是的,但你的公式有问题
EAR
依赖于
Debt\u和
Debt\u和
EAR
依赖于
EAR
。正如我在第一天描述的
EAR
Debt\u和
Debt\u和
Debt
分别等于0和
Debt
。但是在第二个日期,我可以在开始时计算EAR,然后我可以用EAR计算债务
df = pd.DataFrame({'id': [111,111,111, 222,222,222],\
                   'Date': ['30.04.2020', '31.05.2020', '30.06.2020', \
                            '30.04.2020', '31.05.2020', '30.06.2020'],\
                   'Debt': [100,100,70, 200,200,200] , \
                   'Ear_coef': [0,0.2,0.2, 0,0,0.3]}) 
df['Date'] = pd.to_datetime(df['Date'] ) 
df['Contract'] = pd.DataFrame(df.groupby(['id']).apply(lambda x: x.Debt - x.Debt.shift(1))).reset_index().Debt
# df.groupby(['id']).
df