У меня есть таблица, показанная ниже
таблица
Первая строка столбца G (pesudo_payment) генерируется из столбца C (остаток), f (оплата) по формуле: g = c* (1 + e) -f, однако, начиная со второй строки, столбец G основан на предыдущем значении столбца G, которое должно быть: g3 = g2 (1+ e3) -f3
Сначала я попытался «ранжировать» и взять ранг = 1, чтобы вычислить первый ряд каждой группы.
from pyspark.sql.functions import rank
window = Window.partitionBy(df['loan_id']).orderBy(df['date'])
df_new=df.select('*', rank().over(window).alias('rank'))
df_new=df_new.withColumn('col_g',
F.when(F.col('rank')=='1',F.col('balance')*(1+F.col('rate'))-
F.col('payment'))
)
Я пытался использовать функцию задержки для ранга, не равного 1, но не сработал, потому что значения NA по-прежнему равны NA после задержки.
Как мне написать этот код в pyspark?