У меня проблема с вычислением разницы (в%) для двух фреймов данных, имеющих одинаковую форму (datetimeindex + столбцы 0-2000). Я хотел бы сравнить значения строк df1 со строками d2 (df1 line1 с df2 line1, df1 line2 с df2 line2 et c.) И вычислить разницу между двумя значениями и сохранить результат в новом dataframe. Я хочу сравнить значения по столбцам, которые попадают в одно и то же время (например, 12:01), но у фреймов данных есть значения из разных дней (время одинаковое).
Это примеры данных:
df1
A B
time
2019-04-20 12:01 12 0.5
2019-04-20 12:02 14 1
2019-04-20 12:03 15 0.2
2019-04-20 12:04 18 5
2019-04-20 12:05 9 6
df2:
A B
time
2019-04-21 12:01 10 0.5
2019-04-21 12:02 11 1.5
2019-04-21 12:03 5 4
2019-04-21 12:04 20 3
2019-04-21 12:05 3 6
ожидаемый результат:
A B
time
12:01 -16.67 0
12:02 -21.43 50
12:03 -66.67 1900
12:04 11.11 -40
12:05 -66.67 0
В качестве первого шага я уже попробовал pandas функции слияния и объединения, но они не дают желаемого результата.
Затем я попытался написать функцию:
def merge_calculate(df1, df2):
if len(df1) == len(df2):
return(((df2.values - df1.values)/df1.values)*100) #df1.values = start value, df2.values = end value
Функция дает мне массив, но я не уверен, что вычисления были выполнены так, как я хотел.
Я благодарен за любой вклад! Спасибо