2017-12-30 34 views
0

Ich versuche, this answer zu ändern und mehr Abstand zwischen den Spalten zu erhalten.Wie setze ich den Abstand beim HTML-Export eines Pandas-Datenrahmens?

import pandas as pd 

df = pd.DataFrame({'A': [1,10], 
        'B': ['B','BBBBBB'], 
        'C': [0,1000], 
        'D': ['D','DDDDDD']}) 

#https://stackoverflow.com/a/5667535/3014199 
spacing = dict(selector="table",props=[('border-collapse', 'separate'), 
             ('border-spacing', '100px 500px')]) 

# Style 
result=df.style.set_properties(subset=df.columns[[0,2]], **{'text-align':'right'})\ 
       .set_properties(subset=df.columns[[1,3]], **{'text-align':'left'})\ 
       .set_table_styles([spacing]) 

print(result.render(),file=open('test.html','w')) 

Trotz lächerlicher Werte scheinen die Spalten nicht weiter auseinander zu sein.

Hinzufügen von z.B. 'padding-right':'10px', in set_properties scheint zu arbeiten, aber ich möchte die Dinge richtig machen.

(Auch, wie kann ich den Index unterdrücken, war es index=False für .to_html aber, wo es hier setzen?)

Antwort

1

Sie haben selector="table" zu überspringen Eigenschaften <table></table> zuzuordnen.

Mit selector="table" Zuordnung für Tabelle innerhalb der Tabelle <table><table></table></table>.


können Sie verwenden

result.render(head=[])` 

Header zu überspringen, aber es gibt immer noch <thread>, die andere Elemente bewegt, wenn Sie 'border-spacing'

dict(selector="thead", props = [('display', 'none')]) 

Mit verwenden, können Sie <thread> verstecken

Sie können auch überspringen head=[] verwenden und Header in der Datei behalten, aber Sie werden sie nicht sehen.


import pandas as pd 
import webbrowser 


df = pd.DataFrame({ 
     'A': [1, 10], 
     'B': ['B', 'BBBBBB'], 
     'C': [0, 1000], 
     'D': ['D', 'DDDDDD'], 
    }) 

styles = [ 
    dict(
     props=[ 
      ('border-collapse', 'separate'), 
      ('border-spacing', '10px 50px') 
     ] 
    ), 
    dict(
     selector="thead", 
     props = [('display', 'none')] 
    ) 
]   

result = df.style.set_properties(subset=df.columns[[0,2]], **{'text-align':'right'})\ 
       .set_properties(subset=df.columns[[1,3]], **{'text-align':'left'})\ 
       .set_table_styles(styles) 

with open('test.html', 'w') as f: 
    f.write(result.render(head=[])) 

webbrowser.open('test.html') 

BTW: Ich überprüfte im Quellcode: render() verwendet Vorlage html.tpl. to_html() verwendet sehr komplexe Methoden zum Rendern von HTML (dh es verwendet Klasse HTMLFormatter).

Verwandte Themen