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)
Другие вопросы по тегам