Преобразование Pandas DataFrame с иерархическим индексом n-уровня в массив N-D Numpy
Есть ли хороший способ преобразовать DataFrame сnиндекс вn-D Numpy массив (a.k.an-тензор)?
примерПредположим, я настроил DataFrame как
from pandas import DataFrame, MultiIndex
index = range(2), range(3)
value = range(2 * 3)
frame = DataFrame(value, columns=['value'],
index=MultiIndex.from_product(index)).drop((1, 0))
print frame
какие выводы
value
0 0 0
1 1
2 3
1 1 5
2 6
Индекс представляет собой двухуровневый иерархический индекс. Я могу извлечь двумерный массив Numpy из данных, используя
print frame.unstack().values
какие выводы
[[ 0. 1. 2.]
[ nan 4. 5.]]
Как это обобщается наnиндекс?
Играть сunstack()
Похоже, что его можно использовать только для масштабирования двумерной формы DataFrame, но не для добавления оси.
Я не могу использовать напримерframe.values.reshape(x, y, z)
, так как для этого потребуется, чтобы кадр точно содержалx * y * z
строки, которые не могут быть гарантированы. Это то, что я пытался продемонстрироватьdrop()
В строке в приведенном выше примере.
Любые предложения высоко ценятся.