Skip to content

Row Selection

Enable row selection to allow users to select one or more rows.

Selection Modes

Mode Description
None No selection (default)
"single-row" Only one row can be selected
"multi-row" Multiple rows can be selected

Single Row Selection

selected = advanced_dataframe(
    data=df,
    height=300,
    selection_mode="single-row"
)

if selected:
    st.write(f"Selected row index: {selected[0]}")
    st.dataframe(df.iloc[selected])

Multi Row Selection

selected = advanced_dataframe(
    data=df,
    height=300,
    selection_mode="multi-row"
)

if selected:
    st.write(f"Selected {len(selected)} rows")
    st.dataframe(df.iloc[selected])

Return Value

The function returns a list[int] containing the indices of selected rows:

  • Empty list [] when no rows are selected
  • [0] when row at index 0 is selected
  • [0, 2, 5] when rows at indices 0, 2, and 5 are selected

Example with Actions

import pandas as pd
import streamlit as st
from streamlit_advanced_dataframe import advanced_dataframe

df = pd.DataFrame({
    "Product": ["Apple", "Banana", "Orange", "Grape", "Melon"],
    "Price": [150, 100, 120, 300, 500],
    "Stock": [50, 80, 30, 20, 10]
})

selected = advanced_dataframe(
    data=df,
    height=250,
    selection_mode="multi-row"
)

if selected:
    total = df.iloc[selected]["Price"].sum()
    st.success(f"Total price of selected items: ${total}")

    if st.button("Delete Selected"):
        df = df.drop(index=selected)
        st.rerun()