Я пытаюсь написать функцию для вычисления новой переменной в новом столбце. У меня есть набор данных, который отслеживает переменную для нескольких предметов в течение многих дней.
Date Athlete Load
2016-01-04 Alan 180
2016-01-04 Ben 61
2016-01-04 David 186
2016-01-04 Joe 99
2016-01-04 John 131
Мне удалось отфильтровать предметы по имени и создать новые фреймы данных для каждого.
for athlete in df['Athlete'].unique():
athlete = df.loc[ewma['Athlete'] == athlete]
print(athlete.head())
Часть, с которой у меня возникла проблема - это уравнение для вычисления нового столбца. Первое значение вычисляется из первой измеренной переменной, но каждое последующее значение использует значение предыдущего дня.
Например, первая строка нового столбца будет использовать:
x = (df['Load'].iloc[0] * 2) - (df['Load'].iloc[0] / 2)
х = 180
Во второй строке будет использоваться значение предыдущего дня (x) вместо второго значения df ['Load']. Мне удалось правильно рассчитать второе значение с помощью базовой функции:
y = (df['Load'].iloc[1] * 2) - (x / 2)
у = 168
Я пытался использовать 'if / else', но он не вычислял правильные значения.
if df.index.name == '0':
(df['Load'].iloc[0] * 2) - (df['Load'].iloc[0] / 2)
else:
(df['Load'] * 2) - (df['Load'].shitf(-1) / 2)
Любые рекомендации будут с благодарностью.