使用Pandas读取Google Sheets数据遭遇ParserError错误,寻求解决方法
解决读取Google Sheets为Pandas DataFrame时的ParserError问题
错误原因
你碰到的pandas.errors.ParserError是因为导出的CSV文件格式混乱:第3行的字段数量(243个)和预期的(89个)不匹配。通常是Google Sheets里存在以下情况导致的:
- 单元格包含CSV默认分隔符(逗号),且未被正确包裹
- 表格里有合并单元格
- 部分行的列结构和表头不一致
解决方案
方案1:临时跳过错误行(快速验证)
如果可以接受跳过异常行,在read_csv里添加on_bad_lines='skip'参数:
import pandas as pd sheet_id = "1HUbEhsYnLxJP1IisFcSKtHTYlFj_hHe5v21qL9CVyak" df = pd.read_csv(f"https://docs.google.com/spreadsheets/d/{sheet_id}/export?gid=556844753&format=csv", on_bad_lines='skip') print(df)
方案2:修复Google Sheets的格式问题
直接排查并修正表格本身的问题:
- 检查所有包含逗号的单元格,要么替换成其他符号(比如分号),要么确保这些单元格内容被双引号包裹
- 取消所有合并单元格,保证每行的列数和表头一致
- 删除多余的空列或内容错乱的行
方案3:用gspread直接读取(最可靠)
绕过CSV导出的格式问题,直接通过Google Sheets API读取数据:
- 先安装依赖:
pip install gspread pandas gspread-dataframe
- 前往Google Cloud控制台创建服务账号,下载密钥文件(命名为
credentials.json),并把该文件放到代码目录下 - 打开你的Google Sheets,共享给服务账号对应的邮箱(在密钥文件里的
client_email字段) - 运行以下代码:
import gspread from gspread_dataframe import get_as_dataframe # 初始化连接 gc = gspread.service_account(filename='credentials.json') # 打开目标表格 sheet = gc.open_by_key("1HUbEhsYnLxJP1IisFcSKtHTYlFj_hHe5v21qL9CVyak") # 选择对应gid的工作表 worksheet = sheet.get_worksheet_by_id(556844753) # 转为DataFrame df = get_as_dataframe(worksheet) # 清理空行空列 df = df.dropna(how='all').dropna(axis=1, how='all') print(df)
内容的提问来源于stack exchange,提问作者Brahim Laghzaoui
相关产品推荐
相关产品推荐

