Last active
August 10, 2022 19:20
-
-
Save francisco-perez-sorrosal/b216a89313ba947c2edd07a50e0708c7 to your computer and use it in GitHub Desktop.
Paged Dataframe in Streamlit
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import streamlit as st | |
class PagedDataframe: | |
def __init__(self, key, df, page_entries=10): | |
self.key = f"{key}_page" | |
self.df = df | |
self.page_entries = page_entries | |
self.last_page = len(df) // page_entries | |
if self.key not in st.session_state: | |
st.session_state[self.key] = 0 | |
def show(self): | |
# Get start and end indices of the next page of the dataframe | |
start_idx = st.session_state[self.key] * self.page_entries | |
end_idx = (1 + st.session_state[self.key]) * self.page_entries | |
st.write(f"DF Entries: {len(self.df)}") | |
st.dataframe(self.df.iloc[start_idx:end_idx]) | |
def next(self): | |
st.session_state[self.key] = ( | |
0 if st.session_state[self.key] + 1 > self.last_page else st.session_state[self.key] + 1 | |
) | |
self.show() | |
def prev(self): | |
st.session_state[self.key] = ( | |
self.last_page if st.session_state[self.key] - 1 < 0 else st.session_state[self.key] - 1 | |
) | |
self.show() | |
df = pd.DataFrame... | |
st.subheader("Raw data") | |
prev, center, next = st.columns([1, 20, 1]) | |
pd = PagedDataframe("infer_data", df) | |
next.button("Next", on_click=pd.next) | |
prev.button("Prev", on_click=pd.prev) | |
with center.container(): | |
pd.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment