简体   繁体   中英

How to not escape characters when using pandas styles

If I want to add html inside a normal dataframe, I can do

df.to_html(escape=False)

To ensure special characters are not escaped.

On the other hand if I want to use styles, I do

df.style.background_gradient(cmap='Blues').render()

How can I have both?

The render method seem to accept escape=False , but it doesn't do anything.

Additionally, my requirements are such that I would like to:

  1. have the gradient be applied on the original df
  2. be able to change some individual cells afterwards (specifically, I would like to make some cells clickable by surrounding them with <a onclick="...">...</a>

Anyone knows how to do this?

EDIT

Here is an example

import pandas as pd
df = pd.DataFrame([{'i': i*i } for i in range(10)])
df['clickable'] = df['i'].apply(lambda i: f"""<a onClick="alert('you pressed ' + {i})")>Click for {i}</a>""")
df.style.background_gradient(cmap='PuBu')

In the example above, I managed to get the 'clickable' column to be clickable. But I would like the 'i' column to be clickable too, while retaining its style.

I might be wrong, but it seems what you are looking for is something like this:

import pandas as pd
df = pd.DataFrame([{'i': i*i } for i in range(10)])
df.style.background_gradient(cmap='PuBu').format("""<a onClick="alert('{0}')">Click for {0}</a>""", subset=['i'])

This way apply allows you to apply gradients based on values and format allows you to tell styler how you want to render values (everywhere or in specific columns using subset ).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM