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

Python中JSON API转DataFrame写入Google Sheet报错求助

解决方法

gspread的写入接口(如worksheet.update())不支持直接传入DataFrame对象,必须先把DataFrame转换成可JSON序列化的列表结构(列表套列表,对应表格的行与列),以下是具体解决步骤:

1. 手动转换DataFrame为列表格式

将DataFrame的表头和数据行合并成二维列表:

import pandas as pd
import gspread

# 假设已将API数据转为DataFrame
df = pd.DataFrame(your_api_response_data)

# 生成包含表头的二维列表
data_for_sheet = [df.columns.tolist()] + df.values.tolist()

2. 调用gspread写入表格

用转换后的列表调用写入方法:

# 假设已完成gspread授权并获取worksheet对象
worksheet.update('A1', data_for_sheet)

3. 处理特殊数据类型的序列化问题

如果DataFrame包含datetime、numpy数值等无法直接序列化的类型,需先做类型转换:

import numpy as np

# 将datetime列转为字符串格式
df['datetime_col'] = df['datetime_col'].dt.strftime('%Y-%m-%d %H:%M:%S')

# 将numpy数值转为Python原生类型
df = df.applymap(lambda x: x.item() if isinstance(x, (np.integer, np.floating)) else x)

# 再转换为列表写入
data_for_sheet = [df.columns.tolist()] + df.values.tolist()
worksheet.update('A1', data_for_sheet)

4. 替代方案:使用gspread-dataframe库

如果不想手动处理转换,可使用专门封装的gspread-dataframe库,一键完成写入:

# 先安装库:pip install gspread-dataframe
from gspread_dataframe import set_with_dataframe

# 直接将DataFrame写入工作表
set_with_dataframe(worksheet, df)

该库会自动处理类型转换和序列化逻辑,适合新手快速实现需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:55:31