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

如何用Pandas无需读取全量Google Sheets即可筛选指定值对应的行?

解决方案

你当前使用的Google Sheets gviz查询接口原生支持服务端条件过滤,不需要拉取全量表格再本地筛选,只需在请求URL中添加tq参数传入类SQL查询语句即可,可大幅降低大表查询耗时。

完整实现代码

import pandas as pd
from urllib.parse import quote

sheetId = "你的表格ID"
sheetname = "Sheet1"
# 定义查询语句:查询age字段等于26的所有行
query = "SELECT * WHERE age = 26"
# 对查询语句做URL编码避免特殊字符报错
encoded_query = quote(query)
# 拼接请求URL,添加tq参数
url = f"https://docs.google.com/spreadsheets/d/{sheetId}/gviz/tq?tqx=out:csv&sheet={sheetname}&tq={encoded_query}"
# 直接读取已过滤的结果,无需后续本地筛选
filtered_data = pd.read_csv(url)
print(filtered_data)

常见扩展用法

  • 筛选字符串类型字段:将值用单引号包裹即可,例:query = "SELECT * WHERE name = 'sam'"
  • 只返回指定列:修改SELECT后字段列表即可,例:query = "SELECT id,name WHERE age > 20"
  • 多条件筛选:用AND/OR拼接条件即可,例:query = "SELECT * WHERE age > 20 AND name LIKE 'f%'"

小表替代方案(本地筛选)

如果你的表格体积很小,不需要追求极致效率,也可以拉取全量数据后用pandas语法做本地筛选,代码如下:

import pandas as pd

sheetId = "你的表格ID"
sheetname = "Sheet1"
url = f"https://docs.google.com/spreadsheets/d/{sheetId}/gviz/tq?tqx=out:csv&sheet={sheetname}"
# 读取全量数据
full_data = pd.read_csv(url)
# 本地筛选age等于26的行
filtered_data = full_data[full_data['age'] == 26]
print(filtered_data)

内容的提问来源于stack exchange,提问作者quhtani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:09