Як відобразити повну (не врізану) інформацію фрейму даних у html при перетворенні з файлів даних панди в html?


213

Я перетворив кадр даних панди у вихідний файл HTML за допомогою DataFrame.to_htmlфункції. Коли я зберігаю це в окремому файлі html, у ньому відображається усічений вихід.

Наприклад, у моєму стовпці "ТЕКСТ"

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

Фільм був чудовим зусиллям ...

замість

Фільм доклав великих зусиль у деконструкції складних соціальних настроїв, що панували в цей період.

Це видання є чудовим у випадку зручного для екрана формату масивної бази даних панди, але мені потрібен файл html, який відображатиме повні табличні дані, що містяться в кадрі даних, тобто щось, що відображатиме останній текстовий елемент, а не колишній фрагмент тексту.

Як я міг би відображати повні, не врізані текстові дані для кожного елемента в моєму стовпці «TEXT» у html-версії інформації? Я б міг уявити, що в html-таблиці доведеться відображати довгі комірки для відображення повних даних, але, наскільки я розумію, у DataFrame.to_htmlфункцію можуть передаватися лише параметри ширини стовпців .

Відповіді:


426

Установіть display.max_colwidthпараметр -1:

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

set_option док

Наприклад, в iPython ми бачимо, що інформація усічена до 50 символів. Все, що перевищує, є еліпсичним:

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

Якщо встановити цю display.max_colwidthопцію, інформація буде відображатися повністю:

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


10
Згідно з документами, ви повинні встановити це на Noneнеобмежений.
kynan

21
Відповідь правильна, тобто її не слід встановлювати None. В іншому випадку вийде ValueError: Value must have type '<class 'int'>'помилка.
xpt

Це саме те, про що я кажу!
Іван

2
max_columnsВідповідь працював для мене, який використовує в Noneякості другого аргументу set_option.
kilojoules

8
Якщо ви хочете, щоб ці параметри відображення застосовувалися лише один раз, а не постійно, ви також можете використовувати контекстний менеджер як такий:with pd.option_context('display.max_colwidth', -1): display(df)
SA

115
pd.set_option('display.max_columns', None)  

id (другий аргумент) може повністю відображати стовпці.


Зовсім трохи вбік, кількість стовпців, що були врізані для мене, як представлено і еліпсисом (...) біля середини мого столу. Дякую!
чотири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 на "Немає" у рядку над друком (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.