首頁>Program>source

我有一个pandas資料框:

arrays = [['Midland', 'Midland', 'Hereford', 'Hereford', 'Hobbs','Hobbs', 'Childress',
           'Childress', 'Reese', 'Reese', 'San Angelo', 'San Angelo'],
          ['WRF','MOS','WRF','MOS','WRF','MOS','WRF','MOS','WRF','MOS','WRF','MOS']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples)
df = pd.DataFrame(np.random.randn(12, 4), index=arrays,
                  columns=['00 UTC', '06 UTC', '12 UTC', '18 UTC'])

print df的表 从這看起来像這樣:

我想為" MOS"行中的所有值着色某種颜色,並為左邊的两个索引/標题列以及頂部的標题行着色与其餘單元格不同的背景色(值為) 他们.有什麼想法可以做到吗?

最新回復
  • 5月前
    1 #

    這需要一些步骤:

    首次匯入 HTMLre

    from IPython.display import HTML
    import re
    

    您可以在 html 大pandas通過飞龙扑灭 方法。

    to_html
    

    接下来,我们將為要建立的html表和樣式生成一个隨機標識符。

    df_html = df.to_html()
    

    由於我们要插入某種樣式,因此需要谨慎指定该樣式仅適用於我们的表.現在,將其插入 random_id = 'id%d' % np.random.choice(np.arange(1000000))

    df_html
    

    並建立一个樣式標簽.這真的取決於您.我刚刚添加了一些悬停效果。

    df_html = re.sub(r'<table', r'<table id=%s ' % random_id, df_html)
    

    最後,顯示它

    style = """
    <style>
        table#{random_id} tr:hover {{background-color: #f5f5f5}}
    </style>
    """.format(random_id=random_id)
    
    一機多用。
    HTML(style + df_html)
    

    像這樣使用它:

    def HTML_with_style(df, style=None, random_id=None):
        from IPython.display import HTML
        import numpy as np
        import re
        df_html = df.to_html()
        if random_id is None:
            random_id = 'id%d' % np.random.choice(np.arange(1000000))
        if style is None:
            style = """
            <style>
                table#{random_id} {{color: blue}}
            </style>
            """.format(random_id=random_id)
        else:
            new_style = []
            s = re.sub(r'</?style>', '', style).strip()
            for line in s.split('\n'):
                    line = line.strip()
                    if not re.match(r'^table', line):
                        line = re.sub(r'^', 'table ', line)
                    new_style.append(line)
            new_style = ['<style>'] + new_style + ['</style>']
            style = re.sub(r'table(#\S+)?', 'table#%s' % random_id, '\n'.join(new_style))
        df_html = re.sub(r'<table', r'<table id=%s ' % random_id, df_html)
        return HTML(style + df_html)
    
    HTML_with_style(df.head())
    
    HTML_with_style(df.head(), '<style>table {color: red}</style>')
    

    學習CSS並發疯!

  • 5月前
    2 #

    使用pandas的新樣式功能(自0.17.1起):

    style = """
    <style>
        tr:nth-child(even) {color: green;}
        tr:nth-child(odd)  {color: aqua;}
    </style>
    """
    HTML_with_style(df.head(), style)
    
    import numpy as np import pandas as pd arrays = [['Midland', 'Midland', 'Hereford', 'Hereford', 'Hobbs','Hobbs', 'Childress', 'Childress', 'Reese', 'Reese', 'San Angelo', 'San Angelo'], ['WRF','MOS','WRF','MOS','WRF','MOS','WRF','MOS','WRF','MOS','WRF','MOS']] tuples = list(zip(*arrays)) index = pd.MultiIndex.from_tuples(tuples) df = pd.DataFrame(np.random.randn(12, 4), index=arrays, columns=['00 UTC', '06 UTC', '12 UTC', '18 UTC']) def highlight_MOS(s): is_mos = s.index.get_level_values(1) == 'MOS' return ['color: darkorange' if v else 'color: darkblue' for v in is_mos] s = df.style.apply(highlight_MOS) s

  • regex:使用PHP从html代碼获取youtube视频ID
  • 什麼是記憶體洩漏?