Я очень новичок в python, поэтому мне нужно задать этот вопрос:
У меня есть этот фрейм данных:
Мне нужно знать, как я могу получить новый фрейм данных с этим результатом:
Начиная со второй строки (индекс 1), применяется следующая формула:
previous row cell value *(1+actual cell value)
.
Вы можете рассчитать совокупный продукт строк после первой, используя .cumprod()
. Здесь я беру вторую строку вперед, добавляю к ним 1 и вычисляю совокупный продукт. Затем я умножаю это на первую строку.
(df.iloc[1:]+1).cumprod() * df.iloc[0]
А затем соедините первую строку вашего фрейма данных df.head(1)
с вычисленным фреймом данных, используя pd.concat()
:
pd.concat([df.head(1), ((df.iloc[1:]+1).cumprod() * df.iloc[0])], ignore_index=True)
Это можно разделить на части:
# calculation
df2 = (df.iloc[1:]+1).cumprod() * df.iloc[0]
# concatenate the first row of df with the calculation
pd.concat([df.head(1), df2], ignore_index=True)
О, это накопительный продукт? Я взял их как все независимые друг от друга (т. е. a * b, b * c,..., а не a * b, a * b * c,...). Если я ошибаюсь, я изменю свой ответ.
Я изменил ответ, чтобы он работал.
Спасибо за Ваш ответ. Это сработало для второй строки (индекс 1), но не для всех остальных. Цифры изменились, но не так, как предполагалось.