2016-06-09 12 views
9

opcję pandy max_colwidth kontroluje jak wiele znaków zostaną uwzględnione w repr z dataframe:zatrzymać jupyter zawartość komórek owijania notebook w pandy html wyjściu tabeli

import string, random 
import pandas as pd 
df = pd.DataFrame([''.join(random.choice(string.ascii_lowercase + ' ') for j in range(1000)) for i in range(4)]) 

pd.options.display.max_colwidth = 10 
print(df) 

rentowności

  0 
0 lmftge... 
1 pqttqb... 
2 wi wgy... 
3 ow dip... 

i

pd.options.display.max_colwidth = 30 
print(df) 

plony

       0 
0 lmftgenioerszvgzfaxorzciow... 
1 pqttqbqqe pykgguxnjsspbcti... 
2 wi wgybtgcbxkobrwnaxpxwsjc... 
3 ow dippaiamvvcofvousieckko... 

Można również ustawić pd.options.display.max_colwidth = 0, aby całkowicie usunąć limit. W porządku do tej pory!

Ale jeśli dataframe jest renderowany w HTML wewnątrz notebooka, notebook będzie zawijać tabeli kolumny do szerokości ekranu, niezależnie od tego ustawienia:

wrapped table

Czy istnieje jakiś sposób, Aby tego uniknąć, tzn. aby kolumna tabeli HTML była tak szeroka, jak jest to konieczne, aby dopasować każdy wiersz do pojedynczej linii?

Bardziej ogólnie, czy możliwe jest kontrolowanie szerokości kolumn tabeli HTML w wynikach notatnika niezależnie od liczby znaków w wyjściu pandy?

+0

Możesz spróbować napisać własny szablon podrzędny, jak wyjaśniono w dokumentacji ['nbconvert'] (https://nbconvert.readthedocs.io/en/latest/customizing.html). Nie znam szablonów, by napisać odpowiedź, ale [tutaj jest szablon nadrzędny] (https://github.com/jupyter/nbconvert/blob/master/nbconvert/templates/html/full.tpl) posługiwać się. – IanS

+0

Dodałem kilka tagów na wypadek, gdyby ktoś podążający za nimi pomógł ... – IanS

+0

Przyjrzyj się podejściom, w których ludzie używają niestandardowego CSS. Pamiętaj jednak, że jest to jeden rozmiar pasujący do wszystkich wyników Jupyter HTML, więc rozmiar musiałby być śmiesznie mały, aby wyrenderować 500 wierszy bez zawijania. Tak więc, krótka odpowiedź brzmi: Wątpię, czy to jest praktyczne. – smci

Odpowiedz

4

Jeśli się plik: ~/.jupyter/custom$ atom custom.css a następnie umieścić w nim to:

.dataframe td { 
    white-space: nowrap; 
} 

Wtedy będzie zmusić komórkę pokazać jako jednej linii, ale potem można dostać stolik przewijania.

enter image description here

Jeśli chcesz, aby nie przejść, a następnie ustaw:

div.output_subarea { 
    overflow-x: inherit; 
} 

a potem będzie tak szeroki, jak to musi być:

enter image description here

To nie jest super ładne, ale jestem pewien, że możesz to uporządkować, jeśli zajdzie taka potrzeba.

Znalazłem this bardzo pomocny. Będziesz także musiał zrestartować notebook po tym, jak po raz pierwszy utworzysz plik css, aby go zarejestrować, ale od tej pory możesz odświeżyć stronę, aby zobaczyć zmiany w działaniu css.

This was the notebook that I was testing on.

+0

Odpowiedź "aktualne pytanie" rzeczywiście działa dla mnie. Jeśli chcesz pozbyć się odpowiedzi na "przeciwne" pytanie (zachowując skorygowaną ścieżkę do '~/.jupyter/custom/custom.css'), z przyjemnością oznaczę to jako rozwiązanie. – Mike

+0

@Mike Zrobiłem to – Ben

+0

Czy '$ atom' w środku '~/.jupyter/custom $ atom custom.css' jest literówką? – Mike

Powiązane problemy