有没有办法在指定标题的同时将数据附加到谷歌表格?

2024-05-04

在谷歌表格中,我有一个包含很多列的时间序列数据

date mcdonalds kfc anw tacobell
2017-08-01 432 65 543 543
2017-08-02 76 53 74 32
2017-08-03 76 234 45 78

时不时地,通过 python 生成一个新行并将其附加到 google 表格中。

这是我的代码片段,列表变量被称为new_list

new_list = pd.Series.tolist(df)

request = service.spreadsheets().values().append(spreadsheetId=gsheetid, range=sheet_name, valueInputOption="USER_ENTERED", insertDataOption="INSERT_ROWS", body={'values': new_list})
response = request.execute()

然而,在我的Python代码中,有时,列顺序可能与我的谷歌工作表不同,在某些情况下,甚至可能存在谷歌工作表中尚未存在的新列

date kfc burgerking anw
2017-08-07 52 52 32
2017-08-08 726 45 53

有没有办法在指定标题的同时将数据附加到谷歌表格?


我相信您的目标如下。

  • 您有一个电子表格,如问题的第一个表所示。
  • 您的数据框如问题的第二个表所示。
  • 您希望通过检查标题行将数据框的值附加到电子表格。
  • 您想使用 python 的 googleapis 来实现这一点。
  • 您已经使用 Sheets API 获取 Google 电子表格中的值并将其放入其中。

在这种情况下,下面的示例脚本怎么样?

示例脚本1:

在此示例脚本中,使用电子表格中的现有标题行将数据框的值放入电子表格中。电子表格的标题行通过“方法:spreadsheets.values.update”检索。

# This sample value is from your question.
df = pd.DataFrame([["2017-08-07", 52, 52, 32], ["2017-08-08", 726, 45, 53]], columns=["date", "kfc", "burgerking", "anw"])

gsheetid = "###" # Please set your Spreadsheet ID.
sheet_name = "Sheet1" # Please set sheet name.
service = build("sheets", "v4", credentials=creds) # Please use your script here.

header = service.spreadsheets().values().get(spreadsheetId=gsheetid, range=sheet_name).execute())["values"][0]
new_list = []
dic = df.to_dict("records")
for o in dic:
    temp = []
    for h in header:
        temp.append(o[h] if h in o else "")
    new_list.append(temp)
res = service.spreadsheets().values().append(spreadsheetId=gsheetid,range=sheet_name,valueInputOption="USER_ENTERED",insertDataOption="INSERT_ROWS",body={"values": new_list}).execute()
  • 当此脚本运行到您的示例电子表格时,值new_list of [['2017-08-07', '', 52, 32, ''], ['2017-08-08', '', 726, 53, '']]附加到电子表格中。

示例脚本2:

在此示例脚本中,使用电子表格中的现有标题行将数据框的值放入电子表格中。电子表格的标题行通过“方法:spreadsheets.values.get”检索。并且,标题行由“方法:spreadsheets.values.update”更新。

# This sample value is from your question.
df = pd.DataFrame([["2017-08-07", 52, 52, 32], ["2017-08-08", 726, 45, 53]], columns=["date", "kfc", "burgerking", "anw"])

gsheetid = "###" # Please set your Spreadsheet ID.
sheet_name = "Sheet1" # Please set sheet name.
service = build("sheets", "v4", credentials=creds) # Please use your script here.

header = service.spreadsheets().values().get(spreadsheetId=gsheetid, range=sheet_name).execute()["values"][0]
dic = df.to_dict("records")
add_header = [k for k in dic[0].keys() if k not in header]
header = [*header, *add_header]
new_list = []
for o in dic:
    temp = []
    for h in header:
        temp.append(o[h] if h in o else "")
    new_list.append(temp)
if add_header != []:
    service.spreadsheets().values().update(spreadsheetId=gsheetid,range=sheet_name,valueInputOption="USER_ENTERED",body={"values": [header]}).execute()
res = service.spreadsheets().values().append(spreadsheetId=gsheetid,range=sheet_name,valueInputOption="USER_ENTERED",insertDataOption="INSERT_ROWS",body={"values": new_list}).execute()
  • 当此脚本运行到您的示例电子表格时,标题行将由新的标题行更新['date', 'mcdonalds', 'kfc', 'anw', 'tacobell', 'burgerking']。并且,值new_list of [['2017-08-07', '', 52, 32, '', 52], ['2017-08-08', '', 726, 53, '', 45]]附加到电子表格中。

参考:

  • 方法:spreadsheets.values.get https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/get
  • 方法:spreadsheets.values.update https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/update
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法在指定标题的同时将数据附加到谷歌表格? 的相关文章

随机推荐

  • MySQL:通过迭代并与另一行连接来更新表中的行

    我有一张表纸 CREATE TABLE papers id int 11 NOT NULL AUTO INCREMENT title varchar 1000 CHARACTER SET utf8 COLLATE utf8 unicode
  • @Autowired jdbcTemplate 和 h2 内存数据库多次执行 runscript

    我继承了一个项目 并试图针对内存中的 h2 数据库运行一组集成测试 为了让他们传递一些表格 需要创建关系和参考数据 我可以看到问题在于引用的脚本RUNSCRIPT被执行多次 因此生成Index XXX IDX already exists错
  • Windows 批处理文件中的 SQL 语句

    有没有办法让Windows批处理文件直接输入SQL语句而不需要调用脚本 我希望批处理文件登录SQL 然后直接输入语句 EDIT 我正在使用 Oracle v10g 对于单个命令 您可以使用以下技巧 echo select from dual
  • JSON 中的换行符

    我们使用 WCM 工具进行内容输入 内容编辑器将在该工具中输入包含文本和 html 的内容 为了将内容转换为 JSON 我们使用 newton JSON 如下所示 我们传递简单的键和值字典 string output JsonConvert
  • 使用 R 中的 ggplot2 在分类散点图中添加水平线

    我正在尝试为 3 个组绘制一个简单的散点图 每个组具有不同的水平线 线段 例如 组 a 的 hline 为 3 组 b 的 hline 为 2 5 hline 为组 b c 组为 6 library ggplot2 df lt data f
  • 在所有应用程序之上绘制 Android 画布?

    考虑到 Android 的本质 我怀疑这是不可能的 但是有没有办法创建一个显示在所有应用程序之上的各种视图 也许使用 Canvas 对象 我对这个项目的意图并不是恶意的 我创建了一些简单的彩色滤镜软件 http www musatcha c
  • 使用鼠标功能时出错:没有什么可以估算的

    我尝试将 NA 数据填充到数据框中 我做了简单的数据 library mice first lt c 1 2 3 4 5 NA 7 8 9 NA second lt c 1 2 NA 4 5 6 7 NA 9 10 sample data
  • 如何替换 R.drawable."someString"

    我的项目中有一些图像 图像的名称存储在字符串中 我想 setImageResource R drawable 与图像名称的字符串 但问题是这不起作用 我怎样才能做到这一点 这不是正确的语法 您必须得到编译时错误 在更改图像资源之前您必须知道
  • 使用 PHP Mcrypt 加密并使用 MySQL aes_decrypt 解密?

    是否可以使用 PHP 加密数据mcrypt并用MySQL在数据库中解密AES DECRYPT 目前 我正在使用RIJNDAEL 128 for mcrypt关于 PHP 我还确保数据库中的加密字段具有数据类型blob Yet AES DEC
  • .Resx 和 .Resources 文件类型有什么区别?

    我有很多 resources 文件 需要打开并查看 我下载了Zeta 资源编辑器 http www zeta resource editor com 但它仅适用于 Resx 文件 有区别吗 我可以打开 Resources 文件并提取其内容吗
  • Postgresql 上的 Castle Activerecord 错误是“关系不存在”?

    ActiveRecord 映射 ActiveRecord JobTitle Schema public public class JobTitle ActiveRecordValidationBase
  • 如何让 Visual Studio Code 在调试时退出时暂停

    尽我所能 我找不到让 Visual Studio Code 在调试结束时暂停的方法 控制台窗口就消失了 并带走了所有输出 如果我一遍又一遍地运行该程序 我可以看到一些文本闪烁 但我无法在它出现的毫秒内读取它 I can启动时暂停 这样可行
  • Javascript 将 CSV 文件加载到数组中

    我正在 WordPress 中开发一个网页 该网页需要有一个包含所有县的组合框 我有一个 csv 格式的数据集 其中包含所有这些县的约 10k 行 当用户在下拉列表中选择一个县时 我只想在网页中显示所选县的数据 这是我的要求 在 WordP
  • Rails 缓存过期

    我有一个 Rails 应用程序 因为我使用简单的 Rails 缓存 我的测试如下 Rails cache write temp Date today expires in gt 60 seconds 我可以读完Rails cache rea
  • 使用 Jackson 与 Java Mongo DBObject 进行高效 POJO 映射

    虽然类似于使用 MongoDB Java 驱动程序将 DBObject 转换为 POJO https stackoverflow com questions 7684223 convert dbobject to a pojo using
  • 我可以使用.NET Reflector快速修改和重新编译代码吗?

    是否可以使用 NET反射器 http en wikipedia org wiki NET Reflector 或其他工具 修改并重新编译代码quickly 也就是说 不转储源然后使用视觉工作室 http en wikipedia org w
  • 如何使用 python 显示当前用户的进程列表?

    我知道它与 proc 有关 但我不太熟悉它 教科书的答案是使用psutil像这样的模块 import psutil getpass os user name getpass getuser process dict proc pid pro
  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实
  • Android 上的 GStreamer

    谁能给我一些关于让 GStreamer 在 Android 上工作的提示 我以前从未使用过它 我想将它与 FFmpeg 一起使用 我已经编译了 FFmpeg 并且在 Android 上运行良好 我只是想使用 GStreamer 来帮助完成一
  • 有没有办法在指定标题的同时将数据附加到谷歌表格?

    在谷歌表格中 我有一个包含很多列的时间序列数据 date mcdonalds kfc anw tacobell 2017 08 01 432 65 543 543 2017 08 02 76 53 74 32 2017 08 03 76 2