Python обновляет значения столбцов, относящиеся к предыдущей обновленной строке во время итерации по ней - PullRequest
0 голосов
/ 10 декабря 2018

Как сделать мой код красивым, поскольку я уверен, что должно быть более точное решение.Я пытался решить его с помощью панда (но он не использует обновленные значения, но сохраняет старые значения в памяти).Должен ли я использовать какую-то функцию, возвращающую объект генератора, например iterrows?Может быть, я мог бы решить это как-то с cumsum или cumprod?

import pandas as pd


df = pd.DataFrame(data={'val':[0, 0.2, 0.1, 0.5, -0.6]})

prev = 100
val = []

for i in df['val'].tolist():
    prev = prev * i + prev
    val.append(prev)

df['val'] = val

Я хочу обновить значения столбцов в соответствии с уравнением:

n = given value e.g. 100
v0 = 0, v1 = 0.2 etc. 
y0 = n * v0 + n
y1 = y0 * v1 + y0
y2 = y1 * v2 + y1
etc. 

1 Ответ

0 голосов
/ 10 декабря 2018

Вы можете использовать:

df['val'] = 100 * (df['val'] + 1).cumprod()

Причина, по которой это работает, заключается в том, что ваше выражение может быть переписано:

for i in df['val'].tolist():
    prev *= (i + 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...