Приветствую.
Есть пандас датафрейм вида
id | vector
1 | [0,1,0,]
1 | [1,1,0,]
2 | [0,1,1,]
3 | [0,1,0,]
3 | [0,1,1,]
3 | [1,1,0,]
Необходимо произвести сумму векторов, сгруппировав по id.
Т.e. в результате ожидаю получить такой dataframe
1 | [1,2,0,]
2 | [0,1,1,]
3 | [1,3,1,]
Пробую делать это
grouped_train_df = ext_train_df.groupby('id').agg(lambda x: np.sum(x, axis=0))
но результат кривой - списки объединяются, т.е. получется
1 | [0,1,0,1,1,0,]
и так далее..
Есть идеи?
Держи
from functools import reduce
import pandas as pd
df = pd.DataFrame({'id': [1, 1, 3, 3], 'vector': [[0, 1, 0], [1, 1, 0], [0, 1, 0], [0, 1, 1]]})
def vector_sum(series):
return reduce(lambda x, y: [x[0] + y[0], x[1] + y[1], x[2] + y[2]], series)
df.groupby('id').agg(vector_sum)
GoTo
Vitalii
Sheridan
Андрей
Dogma
Сережа
Ruslan
Slam!
Иван
Серафима O̡͙ ͈_O̧͖̣
Alex
ЕЛЬКИН
Oleksii
Rin
Olga Pesnya
Tishka17