Я все еще борюсь со следующим кодом:
xa= [0, 0, 0, 0, 65, 67, 69, 75, 0, 0, 0]
xb = [.3, .3, .3,.3, .3, .3, .3, .3, .3, .3, .3]
ideal = [0, 0, 0, 0, 65, 67, 69, 75, 67.5, 60.75, 54.675]
df = pd.DataFrame({'a':xa, 'b':xb, 'i':ideal})
mask=(df['a']<51) & (df['b']>0)
df['c'] = df['a'].where(mask,0.9).groupby(~mask.cumsum()).cumprod()
print(df)
Я хочу, чтобы столбец 'c' стал как 'идеальный'.Это всего лишь пример моего полного набора данных с 100K + строками.
'маска' рассчитывается следующим образом: когда 'a' {i} <51 AND 'b' {i}> 0?тогда ИСТИНА иначе ЛОЖЬ
столбец 'c' рассчитывается так: Когда 'mask' {i} = FALSE, тогда 'c' {i} = 'a' {i} else 'c' {i} =0,9 * 'c' {i-1}
Так что я надеюсь (однажды), что 'c' станет как 'идеал' ....