One way would be to use the to_html
method in pandas and combine it with Streamlit’s options for injecting html. Though this would lose the interactivity of the pandas dataframe and make it a static table.
st.markdown(df.to_html(render_links=True),unsafe_allow_html=True)
Or if you want to render whatever html is in a cell, you can specify to not escape the characters (with or without rendering plain urls as links):
st.markdown(df.to_html(render_links=True, escape=False),unsafe_allow_html=True)
I see in the documentation that there is experimental support for pandas styler, but I don’t know off the bat how it behaves with styling links since Streamlit is a bit specific about how it accepts and displays html. I’m playing around with it right now and will post again if I find something.