Problem with how a df is being displayed

The same df is shown differently on colab and within streamlit



Does anyone know why this is happening and how I might get it to display just the strings like in colab?

Both st.write() and st.table() shows the whole frozenset() objects.

Thank you :grinning:

Hi @batman -

It’s important to realize that Colab/Jupyter have different style sheets than Streamlit. Is your hope that the second picture would have a different font?


Hi @randyzwitch, thanks for the response. Yes I’m aware there are some style differences :wink:. (I really love st.table!)

I want it to print just the strings inside (like “paper plates”) instead of “frozenset({‘paper plates’})”.

Is there anything I can do or am I limited to regex for now?

1 Like


You can probably workaround this by casting it to tuple at print-time. Its ugly but works :slight_smile:

import streamlit as st
import pandas as pd

df = pd.DataFrame({"x": [frozenset([1, 2, 3]), "a"], "y": [frozenset("abc"), frozenset([1, 2, 3])]})

st.table(df.applymap(lambda x: tuple(x) if isinstance(x, frozenset) else x ))

will show it like this,


Thanks for clarifying that @batman, I completely missed that the values were displayed different. I only saw the font difference :laughing:

Looks like @ash2shukla has provided one possible workaround.

1 Like

This is great! Just what I needed, thank you @ash2shukla :smile::raised_hands:

Also, do you think there's a way to do this with regex? I was trying to learn some basics in the meantime and came up with code that worked in but strangely didn't work when I tried it in streamlit and I am a little stuck.


I used rules["consequents"] = rules["consequents"].str.extract(r"\{(.*?)\}") just to see if it works but it returns nan

I don't need to use regular expressions anymore thanks to your fix but I've been trying to learn me some regex to fix this since I posted and I feel a bit incomplete not being able to get it to work :laughing:

Haha no problem @randyzwitch. Oddly enough, I sent that screenshot to someone else and they asked if it was the font too :joy:

Yes! A simple but effective solution.

I am curious why streamlit displays it like that. Based on the forums it doesn’t seem others have had that problem so maybe it is some weird edge case.

1 Like