St.dataframe: Controlling the height threshold for scolling?


Is there a way to set the maximum height of an st.dataframe before it starts scrolling?

I have a dataframe which I want to display in full, and it’s just barely too large to avoid scrolling. Hence the last row is shown only half, and the user needs to scroll just to it in full.

  • I know that I could use st.table to show the full table instead, but I like the look and additional features of dataframe, like auto-width, sorting or the gray header.
  • I know that I can try to set my height manually, but it feels rather stupid to chase pixel values which probably are still wrong on another browser.

Hence I think the best solution to the problem would be access to the threshold above which the table starts scrolling.


1 Like

Hey David,

Is there a way to set the maximum height of an st.dataframe before it starts scrolling?

Unfortunately, there isn’t any way to do that :frowning: I have added this to our list of feature requests for st.dataframe, but don’t expect anything released on this soon.

The best way currently to do that is by using height. I’m pretty sure that height actually stays stable across browsers. So, once you have figured out the optimal height value for your dataframe, it should work fine across browsers and also with upcoming Streamlit versions.

Thanks for you response and for taking up a feature request!

I’ll go for height then.

1 Like

Looks like height = int(35.2*(n_rows+1)) is the magic formula for my case (11 rows + 1 header). :grin:

A slightly improved calculation might be:

(numRows + 1) * 35 + 3

35 is row height and the +3 adds the additional height required for borders, which will stay constant regardless of the number of rows. I haven’t tested it, so it could be that you have to use higher or lower constant factor.

(numRows + 1) * 35 + 3

Looking pretty good!

1 Like