Pandas Dataframe в массив Numpy Vstack по уникальному значению столбца
У меня есть фрейм данных со следующей структурой:
import numpy as np
import pandas as pd
data = {'Group':['1', '1', '2', '2', '3', '3'], 'Value':[1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
Мне нужно преобразовать этот фрейм данных (который имеет около 4000 значений для каждой уникальной группы и 1000 групп) в массив numpy, подобный следующему (порядок должен быть сохранен)
array([[1, 2],[3, 4],[5,6])
Дополнительно: 99% процентов групп имеют одинаковое количество значений, но некоторые имеют разные значения. Если можно было бы увеличить отступы до максимума. посчитайте, это избавит меня от потери данных.
На данный момент я перебираю значения uniqe 'Group' и numpy.vstack их вместе. Это медленно и далеко не элегантно.
1 ответ
Решение
IIUC, это просто pivot
:
(df.assign(col=df.groupby('Group').cumcount())
.pivot(index='Group', columns='col', values='Value')
.values
)
Выход:
array([[1, 2],
[3, 4],
[5, 6]], dtype=int64)