2016-06-09 71 views
9

L'opzione panda max_colwidth controlla il numero di caratteri saranno inclusi nel repr di un dataframe:arresto jupyter il contenuto delle celle notebook wrapping panda html uscita tavolo

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) 

rendimenti

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

e

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

rese

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

Ed è possibile impostare pd.options.display.max_colwidth = 0 per rimuovere del tutto il limite. Bene finora!

Ma se il dataframe è resa in HTML all'interno di un notebook, il notebook sarà avvolgere il tavolo della colonna alla larghezza del display, indipendentemente da questa impostazione:

wrapped table

C'è un modo per evitare ciò, vale a dire avere la colonna della tabella HTML resa così ampia come è necessario per adattare ciascuna riga su una singola riga?

Più in generale, è possibile controllare la larghezza delle colonne della tabella HTML nell'output del notebook indipendentemente dal numero di caratteri nell'output dei panda?

+0

Si potrebbe provare a scrivere il proprio modello figlio come spiegato nella documentazione ['nbconvert'] (https://nbconvert.readthedocs.io/en/latest/customizing.html). Non conosco abbastanza bene i modelli per scrivere una risposta, ma [ecco il modello principale] (https://github.com/jupyter/nbconvert/blob/master/nbconvert/templates/html/full.tpl) uso. – IanS

+0

Ho aggiunto alcuni tag nel caso in cui qualcuno che segue quelli può aiutare ... – IanS

+0

Guarda gli approcci in cui le persone usano CSS personalizzati. Si noti tuttavia che è un formato unico per tutti gli output HTML di Jupyter, quindi il ridimensionamento dovrebbe essere ridicolmente piccolo per rendere la linea da 500? -char senza wrapping. Quindi, la risposta breve è che dubito che ciò sia pratico. – smci

risposta

4

Se si commette un file: ~/.jupyter/custom$ atom custom.css e poi mettere questo in esso:

.dataframe td { 
    white-space: nowrap; 
} 

Poi si forzerà la cellula di mostrare come una linea, ma poi si ottiene una tabella di scorrimento.

enter image description here

Se si vuole che non scorre, quindi impostare:

div.output_subarea { 
    overflow-x: inherit; 
} 

e allora sarà largo quanto ha bisogno di essere:

enter image description here

Non è super bello, ma sono sicuro che puoi riordinarlo se necessario.

Ho trovato this molto utile. Avrai anche bisogno di riavviare il notebook dopo aver prima creato il file css da registrare, ma da quel momento in poi puoi semplicemente aggiornare la pagina per vedere le modifiche ai css avere effetto.

This was the notebook that I was testing on.

+0

La risposta "domanda reale" funziona davvero per me. Se si desidera eliminare la risposta alla domanda "opposta" (mantenendo il percorso corretto per '//.jupyter/custom/custom.css'), sarei lieto di contrassegnarlo come soluzione. – Mike

+0

@Mike l'ho fatto – Ben

+0

Il '$ atom 'nel mezzo di ~/.jupyter/custom $ atom custom.css' è un refuso? – Mike