2014-10-09 10 views
41

Mam obiekt Python Pandas DataFrame zawierający dane tekstowe. Mój problem polega na tym, że gdy używam funkcji to_html(), obcina ona ciągi na wyjściu.Pandy to_html() obcina zawartość ciągu znaków

Na przykład:

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

Wyjście jest skrócona 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> 

Jest powiązany pytanie na SO, ale używa zastępcze i wyszukiwanie/zastąpić funkcjonalność do przetworzenia HTML, który Chciałbym uniknąć:

Czy istnieje prostsze rozwiązanie tego problemu? Nie mogłem znaleźć niczego związanego z documentation.

+0

Jak ty przeglądania zawartości, czy to poprzez iPython? spróbuj tego 'pd.set_option ('display.max_colwidth', -1)', a następnie wydrukuj kod HTML, powinieneś zauważyć, że wyświetla on pełny tekst, to nie ma nic wspólnego z obcięciem aktualnych danych tylko ustawienie wyświetlania – EdChum

+0

@ EdChum Tak, rzeczywiście patrzyłem na HTML za pomocą IPythona, ale otrzymałem te same wyniki w zwykłym terminalu Pythona. Ale tak, set_option to naprawia! Zarówno w terminalu, jak iw IPythonie. Nie wiedziałem o tej możliwości wcześniej. – Timo

+0

pandy próbują zabezpieczyć się przed wyświetlaniem danych wyjściowych, które mogą zabijać mniejsze środowiska Pythona, poza ukrytymi błędami, o których nie słyszałem, żeby kiedykolwiek skracały dane. – EdChum

Odpowiedz

58

To, co widzisz, to obcinające dane wyjściowe pandy tylko w celach wyświetlania.

Domyślna wartość max_colwidth wynosi 50, co widzisz.

Można ustawić tę wartość na cokolwiek pragnienie lub można ją ustawić na -1, która skutecznie odwraca ten off:

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

Chociaż radziłbym przeciwko temu, że byłoby lepiej, aby ustawić go do czegoś które można łatwo wyświetlić na konsoli lub w ipythonie.

Listę opcji można znaleźć tutaj: http://pandas.pydata.org/pandas-docs/stable/options.html

+4

'" ... "w df.to_html()' zwraca wartość "True". Wygląda na to, że 'panda' skraca wartość wyjściową, a nie tylko wyświetlacz. –

+0

Obniżenie kosztów opieki w celu wyjaśnienia? – EdChum

8

wydaje się, że pd.set_option('display.max_colwidth', -1) jest rzeczywiście jedynym rozwiązaniem. Aby zapobiec nieodwracalnym globalnych zmian jak dataframes są przedstawiane w konsoli, można zapisać poprzednie ustawienie w zmiennej i przywrócić je natychmiast po wykorzystaniu, w następujący sposób:

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

Istnieje znacznie prostsze rozwiązanie, jak ustawić opcję tymczasową: 'with pd.option_context ('display.max_colwidth', -1): output_html = df.to_html()' – hynekcer