2014-10-09 14 views
41

Ich habe ein Python Pandas DataFrame Objekt mit Textdaten. Mein Problem ist, dass wenn ich to_html() Funktion verwende, es die Zeichenfolgen in der Ausgabe abschneidet.Pandas to_html() trunkiert String Inhalt

Zum Beispiel:

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

Der Ausgang bei 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> 

abgeschnitten Es gibt eine weitere Frage auf SO, aber es nutzt Platzhalter und Suchen/Ersetzen-Funktionalität der HTML nachzubearbeiten, die Ich möchte vermeiden:

Gibt es eine einfachere Lösung für dieses Problem? Ich konnte nichts von der documentation verwandten finden.

+0

Wie werden Sie den Inhalt sehen, ist es durch iPython? versuche diese 'pd.set_option ('display.max_colwidth', -1)' und drucke dann das html, solltest du feststellen, dass es den vollen text anzeigt, das hat nichts damit zu tun, die eigentlichen daten abzuschneiden nur eine display-einstellung – EdChum

+0

@ EdChum Ja, in der Tat habe ich den HTML-Code über IPython gelesen, aber ich habe auch die gleichen Ergebnisse im normalen Python-Terminal erhalten. Aber ja, set_option behebt das! Sowohl im Terminal als auch in IPython. Ich wusste vorher nichts von dieser Möglichkeit. – Timo

+0

Pandas versucht dich vor riesigen Mengen an Python-Umgebungen zu schützen, abgesehen von obskuren Fehlern, von denen ich noch nie gehört habe, dass sie die Daten abgeschnitten haben – EdChum

Antwort

58

Was Sie sehen, ist Pandas schneiden die Ausgabe nur für Anzeigezwecke.

Der Standardwert max_colwidth ist 50, was Sie sehen.

Sie können diesen Wert auf was auch immer Sie wünschen, oder Sie können es auf -1 gesetzt, die effektiv diese ausgeschaltet wird:

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

Obwohl ich abraten würde, wäre es besser, es zu etwas zu setzen das kann leicht in Ihrer Konsole oder ipython angezeigt werden.

Eine Liste der Optionen finden Sie hier: http://pandas.pydata.org/pandas-docs/stable/options.html

+4

'" ... "in df.to_html()' ergibt 'True'. Es scheint sicher so, als würde Pandas den Ausgabewert abschneiden, nicht nur die Anzeige. –

+0

Downvoter Pflege zu erklären? – EdChum

8

es scheint, dass pd.set_option('display.max_colwidth', -1) ist in der Tat die einzige Option. Um irreversible globale Veränderungen zu verhindern, wie Datenrahmen werden in der Konsole dargestellt, können Sie die vorherige Einstellung in einer Variablen speichern und wiederherstellen es unmittelbar nach der Nutzung, wie folgt:

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) 
+15

Es gibt eine viel einfachere Lösung, wie man eine temporäre Option setzt: 'mit pd.option_context ('display.max_colwidth', -1): output_html = df.to_html()' – hynekcer

Verwandte Themen