Pandas to_html () скорочує вміст рядка


81

У мене є об’єкт Python Pandas, DataFrameщо містить текстові дані. Моя проблема полягає в тому, що коли я використовую to_html()функцію, вона скорочує рядки у вихідних даних.

Наприклад:

import pandas
df = pandas.DataFrame({'text': ['Lorem ipsum dolor sit amet, consectetur adipiscing elit.']})
print (df.to_html())

Вихідні дані усічені на adapis...

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>text</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td> Lorem ipsum dolor sit amet, consectetur adipis...</td>
    </tr>
  </tbody>
</table>

Існує пов’язане питання щодо SO, але він використовує заповнювачі та функцію пошуку / заміни для подальшої обробки HTML, чого я хотів би уникнути:

Чи існує простіше рішення цієї проблеми? Я не міг знайти нічого пов'язаного з документацією .


2
Як ви переглядаєте вміст, чи це через iPython? спробуйте це, pd.set_option('display.max_colwidth', -1)а потім роздрукуйте html, ви повинні виявити, що він відображає повний текст, це не має нічого спільного з усіченням фактичних даних, просто налаштування відображення
EdChum

@EdChum Так, справді я дивився на HTML через IPython, але також отримав ті самі результати в звичайному терміналі python. Але так, set_option це виправляє! І в терміналі, і в IPython. Раніше не знав про таку можливість.
Тимо

pandas намагається захистити вас від показників вихідних даних, які можуть вбити менші середовища python, крім неясних помилок, я ніколи не чув про це, щоб це
скорочувало

Відповіді:


108

Те, що ви бачите, - це панди, що скорочують висновок лише для відображення.

Значення за замовчуванням max_colwidth- 50, це те, що ви бачите.

Ви можете встановити це значення як завгодно, або встановити значення -1, що ефективно вимикає це:

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

Хоча я б не радив цього, краще було б встановити для нього щось, що легко відображається у вашій консолі або ipython.

Список варіантів можна знайти тут: http://pandas.pydata.org/pandas-docs/stable/options.html


8
`" ... "у df.to_html ()` обчислюється на True. Здається, здається, pandasце скорочення вихідного значення, а не лише відображення.
Chris Chudzicki

У мене є дуже цікавий випадок, який я описую в цьому питанні: stackoverflow.com/questions/51260756/... де значення клітинки в таблиці html містить словник. Словники, які не такі великі, як цей, добре відображаються в інших таблицях, але цей дуже довгий словник скорочується крапками, і я не можу змусити його відображатися. Я експериментував з pd.set_option ('display.max_rows', 1000), не пощастило. Будь-які пропозиції щодо цього чи навіть відповідь на моє запитання?
user637338

Це все ще спосіб зробити це у версії 0.24?
Джейсон Стрімпель,

@JasonStrimpel так, я так вважаю
EdChum

1
@Superdooperhero ви не можете, параметри відображення впливають на всі стовпці або рядки
EdChum

19

здається, pd.set_option('display.max_colwidth', -1)це справді єдиний варіант. Щоб запобігти незворотним глобальним змінам способу подання фреймів даних у консолі, ви можете зберегти попереднє налаштування у змінну та відновити його відразу після використання, як показано нижче:

    old_width = pd.get_option('display.max_colwidth')
    pd.set_option('display.max_colwidth', -1)
    open('some_file.html', 'w').write(some_data.to_html())
    pd.set_option('display.max_colwidth', old_width)

45
Існує набагато простіше рішення, як встановити тимчасовий параметр:with pd.option_context('display.max_colwidth', -1): output_html = df.to_html()
hynekcer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.