Как отобразить полную (не усеченную) информацию о фрейме данных в html при конвертации из фрейма данных pandas в html?

214

Я преобразовал pandas dataframe в вывод html, используя DataFrame.to_htmlфункцию. Когда я сохраняю это в отдельный HTML-файл, файл показывает усеченный вывод.

Например, в моей колонке ТЕКСТ,

df.head(1) покажет

Фильм был отличным усилием ...

вместо того

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

Это представление хорошо в случае дружественного к экрану формата массивного кадра данных pandas, но мне нужен html-файл, который покажет полные табличные данные, содержащиеся в кадре данных, то есть что-то, что покажет последний текстовый элемент, а не бывший текстовый фрагмент.

Как я мог бы показать полные, не усеченные текстовые данные для каждого элемента в моем столбце TEXT в html-версии информации? Я хотел бы представить, что HTML-таблица должна отображать длинные ячейки для отображения полных данных, но, насколько я понимаю, в DataFrame.to_htmlфункцию могут быть переданы только параметры ширины столбца .

Эми
источник

Ответы:

427

Установите display.max_colwidthопцию для -1:

pd.set_option('display.max_colwidth', -1)

set_option документы

Например, в iPython мы видим, что информация усекается до 50 символов. Все, что находится в избытке, имеет форму эллипса:

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

Если вы установите display.max_colwidthопцию, информация будет отображаться полностью:

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

behzad.nouri
источник
12
В соответствии с документами, вы должны установить, чтобы Noneэто означало неограниченное.
Кинан
21
Ответ правильный, т.е. его не следует устанавливать на None. Иначе получит ValueError: Value must have type '<class 'int'>'ошибку.
xpt
Это то, о чем я говорю!
Иван
2
max_columnsОтвет работал для меня, который использует в Noneкачестве второго аргумента set_option.
килоджоулей
10
Если вы хотите, чтобы эти параметры отображения применялись только один раз, а не навсегда, вы также можете использовать диспетчер контекста как таковой:with pd.option_context('display.max_colwidth', -1): display(df)
SA
115
pd.set_option('display.max_columns', None)  

id (второй аргумент) может полностью показать столбцы.

user7579768
источник
Чуть больше в стороне, для меня было обрезано количество столбцов, представленное и многоточием (...) около середины моего стола. Спасибо!
4:43
4
Это сработало для меня, а не другой ответ. Я использую Python 3.6
Durga Swaroop
1
Это не сработало для меня на Python 2.7, но первый ответ @ behzad.nouri сработал.
r3robertson
Это должен быть принятый ответ. Текущий ответ на принятие с опцией max_colwidthможет решить проблему усечения, вызванную тем, что поле имеет слишком длинные значения. Тем не менее, я думаю, что проблемы усечения для большинства людей на самом деле слишком много столбцов. Итак, это max_columnsдолжно быть принято.
Кристофер
@Christopher, OP спросил о ширине одного столбца, многие приходят сюда для обоих, поэтому ответ Карла для них более актуален.
Алексей
87

Хотя pd.set_option('display.max_columns', None)задает количество отображаемых максимальных столбцов, опция pd.set_option('display.max_colwidth', -1)устанавливает максимальную ширину каждого отдельного поля.

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

def print_full(x):
    pd.set_option('display.max_rows', len(x))
    pd.set_option('display.max_columns', None)
    pd.set_option('display.width', 2000)
    pd.set_option('display.float_format', '{:20,.2f}'.format)
    pd.set_option('display.max_colwidth', None)
    print(x)
    pd.reset_option('display.max_rows')
    pd.reset_option('display.max_columns')
    pd.reset_option('display.width')
    pd.reset_option('display.float_format')
    pd.reset_option('display.max_colwidth')
Карл Адлер
источник
измените -1 на «Нет» в строке выше print (x), чтобы избежать предупреждения об устаревании
Марк Жуковский
1

Для тех, кто хочет сделать это в сумерках. Я не мог найти подобную опцию в dask, но если я просто делаю это в той же записной книжке для панд, она работает и для dask.

import pandas as pd
import dask.dataframe as dd
pd.set_option('display.max_colwidth', -1) # This will set the no truncate for pandas as well as for dask. Not sure how it does for dask though. but it works

train_data = dd.read_csv('./data/train.csv')    
train_data.head(5)
Prabhat
источник
0

Следующий код приводит к ошибке ниже:

pd.set_option('display.max_colwidth', -1)

FutureWarning: передача отрицательного целого числа устарела в версии 1.0 и не будет поддерживаться в будущей версии. Вместо этого используйте None, чтобы не ограничивать ширину столбца.

Вместо этого используйте:

pd.set_option('display.max_colwidth', None)

Это решает задачу и соответствует версиям панд, следующих за версией 1.0.

Патрик
источник