使用Pandas读取Google Sheets时遭遇HTTP 400错误求助
解决Pandas读取Google Sheets的HTTP 400错误
核心原因
HTTP 400错误通常由两个问题导致:
- Google Sheets未设置公开可查看权限,外部无法通过URL访问数据
- 导出URL参数不完整或格式错误
解决方案
1. 先设置表格共享权限
打开目标Google Sheets:
- 点击右上角「共享」按钮
- 选择「具有链接的任何人」选项,将权限级别设为「查看者」
- 保存设置
2. 修正CSV导出URL(公开表格适用)
使用以下两种正确格式之一:
格式一:导出默认工作表
import pandas as pd sheet_id = '1xkKegpIEZXDH1d2Os-6Kr7v4t46n5y7PQp3jDLskBVA' df = pd.read_csv(f"https://docs.google.com/spreadsheets/d/{sheet_id}/gviz/tq?tqx=out:csv") print(df)
格式二:指定特定工作表(需获取gid)
- 打开目标工作表,查看浏览器URL中的
gid参数(例如#gid=0) - 替换代码中的gid值:
import pandas as pd sheet_id = '1xkKegpIEZXDH1d2Os-6Kr7v4t46n5y7PQp3jDLskBVA' gid = '0' # 替换为你的工作表gid df = pd.read_csv(f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?format=csv&gid={gid}") print(df)
3. 私有表格解决方案(更可靠)
如果表格需要保持私有,使用gspread库配合Pandas:
步骤1:安装依赖
pip install gspread oauth2client
步骤2:配置Google服务账号
- 前往Google Cloud Console创建服务账号,下载JSON密钥文件
- 在Google Sheets中,将服务账号邮箱添加为表格查看者
步骤3:代码实现
import pandas as pd import gspread from oauth2client.service_account import ServiceAccountCredentials # 设置认证范围 scope = ['https://spreadsheets.google.com/feeds', 'https://www.googleapis.com/auth/drive'] # 加载服务账号密钥 creds = ServiceAccountCredentials.from_json_keyfile_name('your-service-account-key.json', scope) client = gspread.authorize(creds) # 打开表格并读取数据 sheet = client.open_by_key('1xkKegpIEZXDH1d2Os-6Kr7v4t46n5y7PQp3jDLskBVA') worksheet = sheet.get_worksheet(0) # 获取第一个工作表 data = worksheet.get_all_records() # 转换为DataFrame df = pd.DataFrame(data) print(df)
内容的提问来源于stack exchange,提问作者Nguyễn Phúc Khang
相关产品推荐
相关产品推荐

