Я хотел бы преобразовать многоиндексный фрейм данных в последовательность матриц смежности или массив Numpy 3d, индексированный по временным координатам.
Вот фрейм данных:
Boxes = {'Date': ['2016-01-01 00:00:00', '2016-01-01 00:00:00',
'2016-01-01 00:00:00', '2016-01-01 12:00:00', '2016-01-01 12:00:00',
'2016-01-01 12:00:00', '2016-01-01 17:54:00', '2016-01-01 22:44:00'],
'From': ['Green','Green','Green','Blue','Blue','Red','Red','Red'],
'To': ['Rectangle','Rectangle','Square','Rectangle','Square','Square','Square','Rectangle'],
'Qty': ['12', '3', '43', '125', '34', '76', '9', '222' ]}
df = pd.DataFrame(Boxes, columns= ['Date', 'From', 'To', 'Qty'])
Я могу создать многоиндексный фрейм данных с помощью
dups = df.pivot_table(index=['Date'], columns = ['From', 'To'], values = ['Qty'], aggfunc=np.sum).fillna(0)
Каков наилучший способ преобразовать этот многоиндексный фрейм данных в последовательность матриц смежности, которые индексируются компонентом времени?или, чтобы создать массив массивов 3d следующим образом:
[[[ 0. 0. 0. 15. 43.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 125. 34.]
[ 0. 0. 0. 0. 76.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 9.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]
[[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 222. 0.]
[ 0. 0. 0. 0. 0.]
[ 0. 0. 0. 0. 0.]]]
Поскольку эти матрицы будут разреженными, может быть более эффективным будет список смежности.Спасибо!