You can use the pandas styling api. Check it out here Tabulator — Panel 0.11.3 documentation
Thanks for the response Marc. Unfortunately that doesn’t work when there are over a hundred rows or so. In that case, the first couple pagefuls or so get styled but the rest don’t. It’s probably because Tabulator (JS) uses shadow DOM.
If you file a bug report to Panel it could probably be fixed.
The alternatives for now are
- Try to see if you can use the undocumented
pn.widgets.Tabulator. You can use that to provide the configuration dict as shown on Tabulator web page.
- Try using some of the Table alternatives like the DataFrame Pane, DataFrame widget or the Datatable example in the gallery.
If you provide some minimum reproducible example here of what you are trying to do I am sure the community can help you turn this into a solution.
Does the pandas styling work better if you wrap your app in a template? See 200 rows in Tabulator slows things to a crawl - #3 by Marc
And again please share a minimum reproducible code example. It will make it much easier to understand the problem, cause and find a solution.
Realized that the problem occurs only when a height is set (to a value less than full height). Happens with templates too. I want the height to be limited because I need the column headers to remain visible on scrolling. Unfortunately, same issue with templates.
Here’s an example
import panel as pn import pandas as pd import numpy as np from random import * def color_negative_red(val): """ Takes a scalar and returns a string with the css property `'color: red'` for negative strings, black otherwise. """ color = 'red' if val < 0 else 'black' return 'color: %s' % color df = pd.DataFrame(np.random.randn(200, 5)) tbl = pn.widgets.Tabulator(df, theme="site", height=600) tbl.style.applymap(color_negative_red) tbl.show()