Home  >  Article  >  Web Front-end  >  How to Color Text and Backgrounds in a Pandas Dataframe HTML Table?

How to Color Text and Backgrounds in a Pandas Dataframe HTML Table?

Linda Hamilton
Linda HamiltonOriginal
2024-10-31 21:57:02280browse

How to Color Text and Backgrounds in a Pandas Dataframe HTML Table?

Coloring Text and Backgrounds in a Pandas Dataframe HTML Table Python Using Styles and CSS

To customize the appearance of a pandas dataframe HTML table, you can combine the style attribute and CSS.

Changing Text Color

To change the color of text in specific rows of a dataframe, use apply() with a function that applies a CSS style to the values based on conditions. For example, to color all values in the 'MOS' rows with a certain color:

<code class="python">def highlight_MOS(s):
    is_mos = s.index.get_level_values(1) == 'MOS'
    return ['color: orange' if v else 'color: blue' for v in is_mos]

s = df.style.apply(highlight_MOS)</code>

Modifying Background Color

To set the background color of certain cells, you can use set_table_styles() and specify the background_color property:

<code class="python">s.set_table_styles([dict(selector='th', props=[('background-color', 'lightblue')]),
                    dict(selector='td', props=[('background-color', 'white')])])</code>

This will set the background color of all header cells to light blue and the rest of the cells to white.

Example

Combining the above techniques, here's an example of how to color both text and backgrounds:

<code class="python">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: orange' if v else 'color: blue' for v in is_mos]

s = df.style.apply(highlight_MOS)
s.set_table_styles([dict(selector='th', props=[('background-color', 'lightblue')]),
                    dict(selector='td', props=[('background-color', 'white')])])

s</code>

This will produce an HTML table with orange text in 'MOS' rows and light blue header and top-level index backgrounds.

The above is the detailed content of How to Color Text and Backgrounds in a Pandas Dataframe HTML Table?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn