Pandas Dataframe to Numpy Vstack Array по уникальному значению столбца - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть фрейм данных со следующей структурой:

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% процентов групп имеют одинаковое количество значений, но некоторые имеют различное количество. Если бы было возможно увеличить некоторую прокладку до макс. считайте, это избавило бы меня от потерянных данных.

В данный момент я выполняю итерации по уникальным значениям 'Group' и numpy .vstack их вместе. Это медленно и далеко не элегантно.

1 Ответ

1 голос
/ 21 апреля 2020

IIU C, это просто 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)
...