Zuletzt aktiv 11 months ago

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

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

Keine Änderungen

timmy hat die Gist bearbeitet 11 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