Zuletzt aktiv 6 months ago

這段程式碼用來顯示並編輯 DataFrame 資料

timmy hat die Gist bearbeitet 6 months ago. Zu Änderung gehen

Keine Änderungen

timmy hat die Gist bearbeitet 7 months ago. Zu Änderung gehen

1 file changed, 53 insertions

editable_dataframe_app.py(Datei erstellt)

@@ -0,0 +1,53 @@
1 + import streamlit as st
2 + import pandas as pd
3 +
4 + def main():
5 + # 初始化 session_state
6 + if "data" not in st.session_state:
7 + st.session_state.data = pd.DataFrame({
8 + "ID": [1, 2, 3],
9 + "Name": ["Alice", "Bob", "Charlie"],
10 + "Age": [25, 30, 35],
11 + "OtherField": ["Edit me", "Edit me too", "Also editable"]
12 + })
13 + if "edited_data" not in st.session_state:
14 + st.session_state.edited_data = None
15 + if "is_submitted" not in st.session_state:
16 + st.session_state.is_submitted = False
17 +
18 + # 介面標題與說明
19 + st.title("可編輯的 DataFrame 範例")
20 + st.header("請編輯表格內容,並點擊 '更新資料' 以儲存變更。")
21 +
22 + # 編輯 DataFrame
23 + edited_df = st.data_editor(
24 + st.session_state.data,
25 + num_rows="fixed",
26 + key="editable_table",
27 + use_container_width=True,
28 + column_config={
29 + "ID": st.column_config.NumberColumn("ID", disabled=True), # 禁止編輯 ID
30 + "OtherField": st.column_config.TextColumn("OtherField") # 允許編輯 OtherField
31 + },
32 + )
33 +
34 + # 按鈕:儲存編輯後的資料
35 + if st.button("更新資料"):
36 + st.session_state.edited_data = edited_df
37 + st.session_state.is_submitted = True
38 + st.success("變更已儲存!")
39 +
40 + # 更新 session_state 的資料
41 + if st.session_state.edited_data is not None and st.session_state.is_submitted:
42 + st.session_state.data = st.session_state.edited_data
43 + st.success("資料已更新!")
44 + st.session_state.edited_data = None
45 + st.session_state.is_submitted = False
46 +
47 + # 顯示目前資料
48 + st.subheader("目前資料:")
49 + st.dataframe(st.session_state.data)
50 +
51 + if __name__ == "__main__":
52 + main()
53 +
Neuer Älter