Как в столбце фрейма Pandas сложить некоторые ячейки по условию?
У меня есть датафрейм Pandas, где необходимо сложить по определенному столбцу часть его строк. Причем сделать это следует не произвольно а, двигаясь по порядку вниз, отмерять заданное переменной order количество строк.
Итак, сколько строк брать в сумму, подскажет определяемый пользователем показатель order. В нашем случае order=3, значит, складываем по 3 строки. Пока у меня получена исходная таблица. Размышляю над суммированием. Буду благодарен за идеи. Думаю пока в сторону группировки по строкам, но затрудняюсь в реализации.
Код:
import pandas as pd
order = 3
y_0 = 0
koefs_list = [3,4,5]
parameters_list = [1,1,1,2,2,2,3,3,3]
df = pd.DataFrame({"params":parameters_list, "koefs":koefs_list*int(len(parameters_list)/len(koefs_list))})
df["res"] = df["params"]*df["koefs"]+y_0
print(df)
В выводе мне необходимо сложить значения по столбцу res:
params koefs res
0 1 3 3
1 1 4 4
2 1 5 5
3 2 3 6
4 2 4 8
5 2 5 10
6 3 3 9
7 3 4 12
8 3 5 15
Ответы (1 шт):
Вообще у вас и так данные уже разбиты на нужные тройки и можно сделать так:
print(df.groupby('params')['res'].sum())
Но если всё же на это нельзя ориентироваться, то можно просто посчитать элементы с делением на цело на order:
df.groupby(pd.Series(range(df.shape[0]))//order)['res'].sum()
В обоих случаях вывод будет такой:
0 12
1 24
2 36
Name: res, dtype: int64