はじめに
画面上で表を編集させて、どこかにデータを送ることをやりたいが、表を編集すると消える。。色々調べて分かったことを書く。
消えるとき
以下のコードだと消える。
import streamlit as st
import pandas as pd
df=pd.DataFrame()
edited_df=pd.DataFrame()
Flag1=st.button(label='click me01!')
Flag1
if Flag1:
st.write('Thank you')
df = pd.read_csv("tmp.csv")
edited_df = st.experimental_data_editor(df)
何が原因か分かるだろうか?
・・・・
推測だが、experimental_data_editor中の表を編集すると、上からコードが読まれ、dfが空になるためだと思う。
↓動画
消えないとき
ではどうするか?
import streamlit as st
import pandas as pd
df=pd.DataFrame()
edited_df=pd.DataFrame()
Flag1=st.button(label='click me01!')
Flag1
if 'df' not in st.session_state:
st.session_state.df = pd.DataFrame()
if Flag1:
st.write('Thank you')
df = pd.read_csv("tmp.csv")
st.session_state.df=df
edited_df = st.experimental_data_editor(st.session_state.df)
session_stateを使い、dfが空になる影響を受けないようにすればよい。ちょっと不思議なのが、Flag1を再びオンにしても表の値は変わらなかった。
↓動画
おしまい
これで表を編集してデータの送信ができるようになる。


コメント