Справочная сумма по ряду Панд df

#python-3.x #pandas

Вопрос:

У меня есть фрейм данных, в котором один столбец является текущим эталонным значением. Остальные столбцы представляют собой дельта — значения с течением времени эталонного значения. Есть ли быстрый (быстрее, чем цикл for, единственный способ, который я могу придумать сейчас) для вычисления общего числа в каждом из дельта-столбцов?

Ввод:

Ссылка Дельта Дельта2
3 -1 3
12 5 -2

Желаемый Результат:

Ссылка Дельта Дельта2
3 2 6
12 17 10

Ответ №1:

Вы можете временно создать Reference индекс, добавить его значения в остальную часть фрейма данных и сбросить индекс обратно:

 df.set_index("Reference").add(df.Reference.values, axis=0).reset_index()
 

( axis=0 позволяет добавлять по столбцам)

получить

    Reference  Delta  Delta2
0          3      2       6
1         12     17      10
 

Ответ №2:

Второй метод заключается в создании 2D-массива, который вы можете просто добавить в соответствующие столбцы вашего фрейма данных.

Вот решение:

 import pandas as pd
import numpy as np

df = pd.DataFrame({'Reference': [3., 12.], 'Delta1': [-1., 5.], 'Delta2': [3., -2.]})
print(df)

reference_values = np.array(df['Reference'], dtype=float)
reference_values = reference_values.repeat(2).reshape(-1, 2)
df[['Delta1', 'Delta2']]  = reference_values
print(df)