Остановить содержимое ярлыка ноутбука jupyter в pandas вывод таблицы html

Параметр pandas max_colwidth определяет, сколько символов будет включено в репрезентацию блока данных:

import string, random
import pandas as pd
df = pd.DataFrame([''.join(random.choice(string.ascii_lowercase + ' ') for j in range(1000)) for i in range(4)])

pd.options.display.max_colwidth = 10
print(df)

дает

           0
0  lmftge...
1  pqttqb...
2  wi wgy...
3  ow dip...

и

pd.options.display.max_colwidth = 30
print(df)

дает

                               0
0  lmftgenioerszvgzfaxorzciow...
1  pqttqbqqe pykgguxnjsspbcti...
2  wi wgybtgcbxkobrwnaxpxwsjc...
3  ow dippaiamvvcofvousieckko...

И вы можете установить pd.options.display.max_colwidth = 0, чтобы полностью удалить предел. До сих пор хорошо!

Но если фрейм данных отображается в HTML внутри записной книжки, ноутбук переносит таблицу столбца в ширину дисплея независимо от этого параметра:

wrapped table

Есть ли способ избежать этого, т.е. чтобы столбец таблицы HTML отображался так широко, как это необходимо, чтобы соответствовать каждой строке в одной строке?

В более общем плане, можно ли контролировать ширину столбцов таблицы HTML в выходе ноутбука независимо от количества символов в выводе pandas?

Ответ 1

Если вы создадите файл: ~/.jupyter/custom$ atom custom.css, а затем поместите его в него:

.dataframe td {
    white-space: nowrap;
}

Затем он заставит ячейку отображать одну строку, но затем вы получите таблицу прокрутки.

введите описание изображения здесь

Если вы хотите, чтобы он не прокручивался, установите:

div.output_subarea {
    overflow-x: inherit;
}

и тогда он будет таким же широким, как и должно быть:

введите описание изображения здесь

Это не очень красиво, но я уверен, что вы можете его убрать, если это необходимо.

Я нашел этот очень полезным. Вам также потребуется перезагрузить ноутбук после того, как вы сначала создадите файл css для его регистрации, но с этого момента вы можете просто обновить страницу, чтобы увидеть, как изменения в css вступают в силу.

Это был ноутбук, который я тестировал.

Ответ 2

Основываясь на ответе Бена, но без необходимости заходить в пользовательские css файлы, которые по-разному работают в juptyter lab.

Просто поместите это в ячейку и запустите:

%%html
<style>
.dataframe td {
    white-space: nowrap;
}
</style>