使用Google API上传DataFrame至Google Sheets时遇IncorrectCellLabel错误
解决DataFrame上传Google表格时的IncorrectCellLabel: (1, 0)错误
我尝试通过Google API将DataFrame(y_df)上传至Google云端硬盘中的Google表格,先后用两种代码实现,但都返回相同错误:IncorrectCellLabel: (1, 0)。我已在Google云端硬盘中创建了目标表格,需要解决这个错误以完成上传。
第一种代码实现
spreadsheet_name = 'spreadsheet_name' sheet = 'spreadsheet_name' d2g.upload(y_df, spreadsheet_name, sheet, credentials=credentials)
错误输出:
IncorrectCellLabel: (1, 0)
第二种代码实现
path_to_credentials = # 你的json文件路径 scopes = ['https://www.googleapis.com/auth/spreadsheets', 'https://www.googleapis.com/auth/drive'] credentials = ServiceAccountCredentials.from_json_keyfile_name(path_to_credentials, scopes) gc = gspread.authorize(credentials) spreadsheet_name = 'spreadsheet_name' try: sh = gc.open(spreadsheet_name) except gspread.SpreadsheetNotFound: sh = gc.create(spreadsheet_name) worksheet_name = 'spreadsheet_name' try: worksheet = sh.worksheet(worksheet_name) except gspread.WorksheetNotFound: worksheet = sh.add_worksheet(title=worksheet_name, rows="100", cols="20") set_with_dataframe(worksheet, y_df)
错误输出:
IncorrectCellLabel: (1, 0)
解决方案
这个错误的核心原因是Google Sheets的单元格标签采用1-based索引(行、列从1开始),而DataFrame默认是0-based索引,工具库在转换索引时生成了无效的(1,0)标签(第1行第0列,不存在)。可以通过以下方式修复:
上传时忽略DataFrame的行索引:在调用上传方法时,添加忽略行索引的参数,避免工具尝试将0-based的行索引转换为单元格标签:
对于第二种代码的set_with_dataframe:set_with_dataframe(worksheet, y_df, index=False)对于第一种代码的
d2g.upload,如果库支持,添加类似参数:d2g.upload(y_df, spreadsheet_name, sheet, credentials=credentials, index=False)指定明确的起始单元格位置:强制从Google Sheets的有效起始单元格(比如A1,对应行1、列1)开始写入,避免索引转换出错:
set_with_dataframe(worksheet, y_df, row=1, col=1, index=False)检查DataFrame的列索引:确保DataFrame的列名没有空值或异常格式,避免生成无效的列标签。如果列索引是0-based数字,可以先将列名转换为1-based或自定义列名:
y_df.columns = [f'列{i+1}' for i in range(y_df.shape[1])]
内容的提问来源于stack exchange,提问作者Максим
相关产品推荐
相关产品推荐

