Here is a toy example of how you can do that:
import streamlit as st
import pandas as pd
if "df" not in st.session_state:
st.session_state.df = pd.DataFrame(
{
"Name":["A","B","C"],
"Approve":[False,False,False],
"Deny":[False,False,False]
}
)
df = st.session_state.df
new_df = st.data_editor(df, key="edits")
if st.session_state.edits["edited_rows"]:
for row, edits in st.session_state.edits["edited_rows"].items():
for col, value in edits.items():
st.session_state.df.loc[row, col] = value
if "Approve" in edits and edits["Approve"] == True:
st.session_state.df.loc[row, "Deny"] = False
elif "Deny" in edits and edits["Deny"] == True:
st.session_state.df.loc[row, "Approve"] = False
st.rerun()