Преобразование кадра данных временных рядов Pandas в трехмерный массив - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть индексированный по времени фрейм данных с двумя столбцами «USER_ID» и «Daily_BALANCE».Фрейм данных показывает дневной баланс пользователей за апрель 2018 года (т.е. 30 наблюдений для каждого пользователя).Мне нужно сгенерировать из этого фрейма данных трехмерный массив с формой (N (Nb of Users в фрейме данных), 30 (дневная дата), 1 (баланс)), содержащий соответствующие значения.Может кто-нибудь помочь мне код для этого.например, если у нас есть 100 пользователей в кадре данных, я получаю массив с формой (100,30,1), равный 100 2D массивам с 30 строками и одним столбцом в каждом.

enter image description here

Спасибо

1 Ответ

0 голосов
/ 23 сентября 2019

Я предполагаю, что вы захотите сохранить только значения дневного баланса в вашем окончательном трехмерном массиве, чтобы получить баланс пользователя ith за jth день, вы должны сделать arr[i-1, j-1, 0].

Если это так, то сначала вам нужно отсортировать ваш фрейм данных по USER_ID и DATE, а затем получить массив numpy и, наконец, reshape it

n_users = len(df.USER_ID.unique())
n_days = len(df.DATE.unique())

arr = df.sort_values(by=['USER_ID', 'DATE'])['Daily_BALANCE'].values.reshape(n_users, n_days, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...