gpt4 book ai didi

python - 当前一个值也使用组数据计算时,如何在 Pandas 数据框中使用前一行值

转载 作者:行者123 更新时间:2023-12-04 13:37:15 27 4
gpt4 key购买 nike

我有这样的数据帧:

enter image description here

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

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

enter image description here

起始数据帧:
  • 第一列是合约编号;
  • 第二列是日期;
  • 第三列是预付系数(EAR);
  • 第4栏为契约(Contract)付款;

  • 结果数据帧:
  • 第 5 列是 EAR。它等于 Ear_coef(t) * Debt_with_EAR(t-1)
  • 第 6 列是 Debt_with_EAR。它等于 Debt_with_EAR(t-1)+Contract(t)+EAR(t)

  • Ear 和 Debt_with_EAR 在第一次约会时分别等于 0 和 Debt。

    我试图用apply来解决这样的任务。但是我没有成功,因为我需要使用以前计算过的值。
    这个答案对我没有帮助 Is there a way in Pandas to use previous row value in dataframe.apply when previous value is also calculated in the apply?
    因为我有数百个 ID。

    我将不胜感激。

    最佳答案

    您正在寻找 .shift() .

    它不适合 .apply()然而。解决方法是:

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

    对于最后一栏,您可能需要 .rolling() ,但我不确定你的公式?似乎永无止境。

    关于python - 当前一个值也使用组数据计算时,如何在 Pandas 数据框中使用前一行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61143168/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com