Streamlit 表のデータが消える?

会社技術

はじめに

画面上で表を編集させて、どこかにデータを送ることをやりたいが、表を編集すると消える。。色々調べて分かったことを書く。

消えるとき

以下のコードだと消える。

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を再びオンにしても表の値は変わらなかった。

↓動画

おしまい

これで表を編集してデータの送信ができるようになる。

コメント