Допустим, у меня есть следующий фрейм данных:
df_raw = pd.DataFrame({"person_id": [101, 101, 102, 102, 102, 103], "date": [0, 5, 0, 7, 11, 0], "val1": [99, 11, 22, 33, 44, 22], "val2": [77, 88, 22, 66, 55, 33]})
Чего я хочу добиться, так это создать 3-мерный массив NumPy так, чтобы в результате получилось следующее:
np_pros = np.array([[[0, 99, 77], [5, 11, 88]], [[0, 22, 22], [7, 33, 66], [11, 44, 55]], [[0, 22, 33]]])
Другими словами, трехмерный массив должен иметь следующую форму [unique_ids, None, feature_size]
. В моем случае число unique_ids
равно 3, feature size
равно 3 (все столбцы, кроме person_id
), а столбец y
имеет переменную длину и указывает количество измерений для person_id
.
Мне хорошо известно, что я могу создать массив np.zeros((unique_ids, max_num_features, feature_size))
, заполнить его, а затем удалить ненужные элементы, но я хочу что-то быстрее. Причина в том, что мой фактический фрейм данных огромен (примерно [50000, 455]
), что приведет к массиву с массой примерно [12500, 200, 455].
Ждем ваших ответов!