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

Linda Hamilton
Release: 2024-10-31 21:57:02
Original
292 people have browsed it

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>
Copy after login

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>
Copy after login

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>
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!