Многомерный numpy .ndarray из многоиндексированных pandas .DataFrame - PullRequest
0 голосов
/ 27 января 2020

Я хочу создать трехмерный numpy .ndarray из многоиндексированного pandas .DataFrame. Точнее, скажем, у меня есть:

df = pd.DataFrame([[1, '1' , 1, 10], [1, '2', 2, 20], [2, '1', 5, 30]], columns=['x', 'y', 'z', 't'])
df = df.set_index(['x','y'])
df

, что дает мне

        z  t
  x  y
  1  1  1 10
     2  2 20
  2  1  5 30

, и я хочу написать функцию, которая возвращает с аргументом выше numpy .ndarray

  [[[1, 10],
    [2, 20]],
   [[5, 30],
    [NaN, NaN]]]

Pandas многоиндексный выглядит как замена многомерных массивов, но он не обеспечивает (или, по крайней мере, не документирует) способы go туда-сюда ...

Спасибо.

1 Ответ

1 голос
/ 27 января 2020

Использование:

df.to_xarray().to_array().values.transpose(1,2,0)

>>[[[ 1. 10.]
  [ 2. 20.]]

 [[ 5. 30.]
  [nan nan]]]
...