python - 如何将 pandas 数据框正确格式化为 google sheet api
问题描述
我正在尝试通过 google sheet API 从 python 获取一些数据到 google sheet。数据通过 df 格式化,其中 amount_a、shoesize_a 和 frequency_a 都是列表
df_asks = pd.DataFrame(
{
"Asks(USD)":amounts_a,
"Shoes Size(US)":shoesize_a,
"Frequency":frequency_a
}
)
用于更新电子表格的代码:
service = discovery.build('sheets', 'v4', credentials=creds)
spreadsheetId = "xxx"
range_ = sheetname + coordinate
value_input_option = "USER_ENTERED"
value_range_body = {
"majorDimension":"COLUMNS",
"values":
[data]
}
request = service.spreadsheets().values().update(spreadsheetId=spreadsheetId, range=range_,
valueInputOption=value_input_option, body=value_range_body)
print (request)
response = request.execute()
尝试使用当前数据格式更新电子表格值时,我收到以下错误“TypeError:DataFrame 类型的对象不是 JSON 可序列化的”
我使用 (.to_json()) 将数据帧转换为 json,然后它可以工作,但电子表格中的数据格式是一行中的整个数据帧
如何将此数据框转换为格式正确的工作表(如印刷版所示)?
我是使用数据框和 api 的新手,任何帮助将不胜感激
解决方案
修改点:
- 在这种情况下,
values
Sheets API 中的电子表格.values.update 方法的属性值需要是二维数组。 - 根据您的问题,我了解到您可能希望通过将 的值
df_asks
转换df_asks
为data
.
在这个答案中,我想提出以下修改。
修改后的脚本:
在本次修改中,data
修改如下。
value_range_body = {
"majorDimension":"COLUMNS",
"values":
[data]
}
至:
data = [df_asks.columns.values.tolist()]
data.extend(df_asks.values.tolist())
value_range_body = {"values": data}
- 当您不想包含标题行时,我认为您也可以使用
data
asdata = df_asks.values.tolist()
。
参考:
推荐阅读
- android - TextView 在可见性更改后丢失 Alpha 信息(当 animateLayoutChange 为 true 时)
- java - 是否可以通过这种方式检查二维数组中的所有元素是否相同?
- uwp - UWP 缩放树视图内的文本块 - 文本换行
- amazon-web-services - -bash:询问:找不到命令
- php - 是否可以从 laravel pluck() 生成关联数组
- python - Tensorboard 日志中的峰值 - PPO2 稳定基线
- python - 如何导入站点包的模块而不是当前目录中同名的模块(python 3.x)?
- xml - 如何在 MS Access 中从 VBA 创建 UTF-8 编码的 XML 文件?
- r - dplyr 将变量传递给函数以动态排列 cols
- php - Laravel 缓存与路由模型绑定?