2025, Oct 30 18:46

Показ индекса DataFrame pandas в marimo как в Jupyter

Разберем, как отобразить индекс DataFrame pandas в marimo так же, как в Jupyter: почему он скрывается по умолчанию и как включить его через HTML-рендеринг.

Как сделать так, чтобы pandas показывал индекс в marimo так же, как в Jupyter

Контекст

Когда вы создаёте DataFrame pandas в ноутбуке Jupyter и позволяете ячейке отрисоваться, вы видите индекс рядом со столбцами. Запуск того же кода в marimo может скрывать индекс при отображении. Если вы полагаетесь на индекс для просмотра или быстрой проверки, такое расхождение раздражает и его легко пропустить.

Минимальный пример, который показывает различие

import pandas as p

p.DataFrame({"col1": ["a", "b", "c", "d"], "col2": ["e", "f", "g", "h"]})

В Jupyter это отображается с видимым индексом (0, 1, 2, 3). В marimo запуск той же ячейки может скрыть индекс в выводе.

Что происходит

Один и тот же объект pandas показывается в двух средах с разными фронтендами. В Jupyter по умолчанию отображение DataFrame включает индекс. В marimo индекс скрывается, когда вы напрямую вычисляете ту же ячейку с DataFrame. Если хотите, чтобы индекс был виден в marimo, возьмите управление рендерингом на себя.

Решение

Отрендерьте DataFrame в HTML самостоятельно и позвольте marimo показать этот HTML. Тогда индекс появится в выводе.

import pandas as p
import marimo as m

grid = p.DataFrame({"col1": ["a", "b", "c", "d"], "col2": ["e", "f", "g", "h"]})
m.Html(grid.to_html())

Такой подход сохраняет содержимое DataFrame и показывает индекс при просмотре в marimo.

Почему это важно

Видимость индекса влияет на то, как вы на лету проверяете объединения, порядок, срезы и выравнивание. Если вы переключаетесь между Jupyter и marimo, единообразное отображение помогает избежать ложных предположений во время разведочного анализа и ревью кода.

Выводы

Если вам нужен видимый индекс в marimo, рендерьте DataFrame явно и показывайте его через HTML. Пользуйтесь этим приёмом всякий раз, когда важны детали представления и вы хотите получить результат, совпадающий с тем, что видите в Jupyter.

Статья основана на вопросе с StackOverflow от Laurent и ответе от Gооd_Mаn.