Как отобразить полную (не усеченную) информацию о фрейме данных в 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опцию, информация будет отображаться полностью:

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


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 (второй аргумент) может полностью показать столбцы.


Чуть больше в стороне, для меня было обрезано количество столбцов, представленное и многоточием (...) около середины моего стола. Спасибо!
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)

0

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

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

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.