Wie werden vollständige (nicht abgeschnittene) Datenrahmeninformationen in HTML angezeigt, wenn von Pandas-Datenrahmen in HTML konvertiert wird?

213

Ich habe einen Pandas-Datenrahmen mit der DataFrame.to_htmlFunktion in eine HTML-Ausgabe konvertiert . Wenn ich dies in einer separaten HTML-Datei speichere, zeigt die Datei eine abgeschnittene Ausgabe.

Zum Beispiel in meiner TEXT-Spalte:

df.head(1) wird zeigen

Der Film war eine hervorragende Leistung ...

anstatt

Der Film war eine hervorragende Anstrengung, um die komplexen sozialen Gefühle, die in dieser Zeit vorherrschten, zu dekonstruieren.

Diese Wiedergabe ist im Fall eines bildschirmfreundlichen Formats eines massiven Pandas-Datenrahmens in Ordnung, aber ich benötige eine HTML-Datei, die vollständige tabellarische Daten enthält, die im Datenrahmen enthalten sind, dh etwas, das das letztere Textelement anstelle des ehemaliger Textausschnitt.

Wie kann ich die vollständigen, nicht abgeschnittenen Textdaten für jedes Element in meiner TEXT-Spalte in der HTML-Version der Informationen anzeigen? Ich würde mir vorstellen, dass die HTML-Tabelle lange Zellen anzeigen müsste, um die vollständigen Daten anzuzeigen, aber soweit ich weiß, können nur Spaltenbreitenparameter an die DataFrame.to_htmlFunktion übergeben werden.

Amy
quelle

Antworten:

422

Stellen Sie die display.max_colwidthOption auf -1:

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

set_option docs

In iPython sehen wir beispielsweise, dass die Informationen auf 50 Zeichen gekürzt werden. Alles, was darüber hinausgeht, ist ellipsiert:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie die display.max_colwidthOption festlegen , werden die Informationen vollständig angezeigt:

Geben Sie hier die Bildbeschreibung ein

behzad.nouri
quelle
10
Gemäß den Dokumenten sollten Sie es so einstellen, dass es Noneunbegrenzt bedeutet.
Kynan
21
Die Antwort ist richtig, dh sie sollte nicht eingestellt werden None. Andernfalls wird ein ValueError: Value must have type '<class 'int'>'Fehler angezeigt.
xpt
Davon spreche ich!
Ivan
2
Die max_columnsAntwort hat bei mir funktioniert, was Noneals zweites Argument von verwendet wird set_option.
Kilojoule
8
Wenn Sie möchten, dass diese Anzeigeoptionen nur einmal und nicht dauerhaft angewendet werden, können Sie auch den Kontextmanager als solchen verwenden:with pd.option_context('display.max_colwidth', -1): display(df)
SA
114
pd.set_option('display.max_columns', None)  

id (zweites Argument) kann die Spalten vollständig anzeigen.

user7579768
quelle
Abgesehen davon wurde die Anzahl der Spalten für mich abgeschnitten, wie durch und Auslassungspunkte (...) in der Mitte meines Tisches dargestellt. Vielen Dank!
Four43
4
Das hat bei mir funktioniert und nicht bei der anderen Antwort. Ich benutze Python 3.6
Durga Swaroop
1
Dies funktionierte bei Python 2.7 nicht, aber die erste Antwort von @ behzad.nouri tat es.
r3robertson
Dies sollte die akzeptierte Antwort sein. Die aktuelle Antwort zum Akzeptieren mit Option max_colwidthkann das abgeschnittene Problem lösen, das durch ein Feld mit zu langen Werten verursacht wird. Ich denke jedoch, dass die abgeschnittenen Probleme für die meisten Menschen tatsächlich zu viele Spalten sind. Dies max_columnssollte also die akzeptierte sein.
Christopher
@Christopher, OP fragte nach der Breite einer Spalte, viele kommen für beide hierher, daher ist die Antwort von Karl für sie relevanter.
Alexei Martianov
87

Während pd.set_option('display.max_columns', None)die Anzahl der angezeigten maximalen Spalten festgelegt wird, pd.set_option('display.max_colwidth', -1)legt die Option die maximale Breite jedes einzelnen Felds fest.

Für meine Zwecke habe ich eine kleine Hilfsfunktion geschrieben, um große Datenrahmen vollständig zu drucken, ohne den Rest des Codes zu beeinflussen. Außerdem werden Gleitkommazahlen neu formatiert und die virtuelle Anzeigebreite festgelegt. Sie können es für Ihre Anwendungsfälle übernehmen.

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')
Karl Adler
quelle
Ändern Sie -1 in "Keine" in der Zeile über Druck (x), um eine Warnung vor
Mark Zhukovsky
1

Für diejenigen, die dies in Dask tun möchten. Ich konnte keine ähnliche Option in Dask finden, aber wenn ich dies einfach in demselben Notizbuch für Pandas mache, funktioniert es auch für 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
quelle
0

Der folgende Code führt zu dem folgenden Fehler:

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

FutureWarning: Das Übergeben einer negativen Ganzzahl ist in Version 1.0 veraltet und wird in zukünftigen Versionen nicht unterstützt. Verwenden Sie stattdessen None, um die Spaltenbreite nicht zu begrenzen.

Verwenden Sie stattdessen:

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

Dies erfüllt die Aufgabe und entspricht den Versionen von Pandas nach Version 1.0.

Patrick
quelle