Создание мультииндекса для фрейма данных panda для координат x и y и метки времени - PullRequest
1 голос
/ 19 февраля 2020

Я застрял в своих знаниях по созданию мультииндексов для pandas кадра данных. Мой фрейм данных - это изображение с размером 230 x 640. Я добавил столбец с отметкой времени, и теперь я хочу создать мультииндекс с моей координатой x и y и отметкой времени. Отметка времени также нужна мне как индекс, потому что я объединяю несколько кадров с разной отметкой времени, но с одинаковой шириной и высотой кадра.

Есть ли способ создать такой индекс? Моя цель - получить: Hey значение 2 и 0 слишком велико.

Изображение кадра данных без индекса

Мой кадр данных выглядит так (val - это значение температуры) :

 0    1   2  ..  639  ts

0    val val val ..  val
1    val ..
2    ..
..
229

1 Ответ

1 голос
/ 19 февраля 2020

Я полагаю, что это то, что вы хотите.

Я предполагаю, что ваш "x" находится в ваших строках, а "y" - в ваших столбцах, и что вы хотите MultiIndex с ["ts", "x", "y"]:

(df
 .rename_axis('x').reset_index()
 .set_index(['ts', 'x'])
 .rename_axis('y', axis=1).stack()
 .rename('value')
)

Разбить его:

  • rename_axis('x').reset_index(): переименовать текущий индекс в «x» и превратить его в обычный столбец (что потребуется для следующего шага.)
  • set_index(['ts', 'x']): установите индекс как MultiIndex с ["ts", "x"]. Это очень похоже на оригинальный DataFrame, только с "ts", перемещенным в индекс.
  • rename_axis('y', axis=1): Назовите ось столбца как "y".
  • stack(): поверните столбцы в строки, добавляя третий компонент в MultiIndex. Получившаяся серия должна иметь желаемую форму.
  • rename('value'): переименуйте серию как «значение», в случае, если вы вернете ее обратно в DataFrame с to_frame(), именем которого будет столбец.
...