You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Streamlit的.secrets.toml中配置多个Google Sheets工作表并实现多表数据聚合

如何在Streamlit的.secrets.toml中配置多个Google Sheets工作表并实现多表数据聚合

嘿,我来帮你搞定多表聚合的问题!官方文档只覆盖了单Google Sheet的情况,但其实只要稍微调整配置和代码,就能轻松实现多表数据的聚合,下面一步步来操作:

1. 调整.secrets.toml的配置

你需要在.streamlit/secrets.toml文件里,为每个要聚合的Google Sheet单独配置一个连接项,每个项用唯一的名称区分,这样Streamlit才能识别不同的表。示例配置如下:

[connections.gsheets_sheet1]
spreadsheet = "https://docs.google.com/spreadsheets/d/xxxxxxx/edit#gid=0"

[connections.gsheets_sheet2]
spreadsheet = "https://docs.google.com/spreadsheets/d/yyyyyyy/edit#gid=0"

# 要是还有更多表,继续添加就行,只要连接名不重复
[connections.gsheets_sheet3]
spreadsheet = "https://docs.google.com/spreadsheets/d/zzzzzzz/edit#gid=0"

小提示:连接名(比如gsheets_sheet1)可以改成更贴合你业务的名称,比如customer_data、sales_records,这样后续代码里更容易区分。

2. 修改Streamlit代码实现多表读取与聚合

接下来在你的streamlit_app.py里,为每个配置好的连接创建对应的GSheetsConnection实例,读取每个表的数据,最后根据你的需求把数据聚合起来(比如行拼接、列关联等)。示例代码如下:

import streamlit as st
from streamlit_gsheets import GSheetsConnection
import pandas as pd

# 为每个工作表创建独立的连接
conn_customer = st.connection("gsheets_sheet1", type=GSheetsConnection)
conn_sales = st.connection("gsheets_sheet2", type=GSheetsConnection)
conn_inventory = st.connection("gsheets_sheet3", type=GSheetsConnection)

# 读取每个表的DataFrame
df_customer = conn_customer.read()
df_sales = conn_sales.read()
df_inventory = conn_inventory.read()

# 数据聚合示例 - 如果表结构相同,用行拼接
# 如果表结构不同,可以用pd.merge()根据共同字段(比如ID、日期)关联
aggregated_df = pd.concat([df_customer, df_sales, df_inventory], ignore_index=True)

# 展示聚合后的结果
st.subheader("聚合后的多表数据")
st.dataframe(aggregated_df)

# 也可以像你原来的代码那样遍历数据
st.subheader("遍历聚合数据示例")
for row in aggregated_df.itertuples():
    st.write(f"{row.name} has a :{row.pet}:")

注意:如果你的各个工作表结构不一样,一定要选择合适的聚合方式,比如用pd.merge()来关联共同的字段,而不是直接行拼接,避免数据混乱。

备注:内容来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 08:54:49