首页 > 解决方案 > 以与 Jupyter Notebook 相同的样式将 pandas 数据框呈现为 HTML

问题描述

我想以与 Jupyter Notebook 相同的方式将 pandas 数据框呈现为 HTML,即所有的花里胡哨,如漂亮的样式、列突出显示和单击时的列排序。

在此处输入图像描述

pandas.to_html只输出一个普通的 HTML 表格,需要手动样式等。

jupyter 使用的数据帧渲染代码是否可用作可在任何 Web 应用程序中使用的独立模块?

此外,js/css 文件等资产是否与 jupyter 解耦,以便它们可以轻松重用?

标签: pythonpandasdataframeipythonjupyter-notebook

解决方案


这对我很有效

def getTableHTML(df):
    
    """
    From https://stackoverflow.com/a/49687866/2007153
    
    Get a Jupyter like html of pandas dataframe
    
    """

    styles = [
        #table properties
        dict(selector=" ", 
             props=[("margin","0"),
                    ("font-family",'"Helvetica", "Arial", sans-serif'),
                    ("border-collapse", "collapse"),
                    ("border","none"),
    #                 ("border", "2px solid #ccf")
                       ]),

        #header color - optional
    #     dict(selector="thead", 
    #          props=[("background-color","#cc8484")
    #                ]),

        #background shading
        dict(selector="tbody tr:nth-child(even)",
             props=[("background-color", "#fff")]),
        dict(selector="tbody tr:nth-child(odd)",
             props=[("background-color", "#eee")]),

        #cell spacing
        dict(selector="td", 
             props=[("padding", ".5em")]),

        #header cell properties
        dict(selector="th", 
             props=[("font-size", "100%"),
                    ("text-align", "center")]),


    ]
    return (df.style.set_table_styles(styles)).render()
iris = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/iris.csv')
getTableHTML(iris)

推荐阅读