【问题标题】:Updating Google Spreadsheet Row by Row using Gspread使用 Gspread 逐行更新 Google 电子表格
【发布时间】:2019-06-29 17:34:30
【问题描述】:

我正在使用 Python 和 gspread 将数据插入/更新我的 Google 电子表格。

我尝试了两种不同的脚本。第一个给了我对象不是 JSON 可序列化的错误。第二个工作但最终停止,因为我达到了我的 API 调用配额。我有很多数据需要更新。

代码 1

    row=list(df.iloc[i])
    sheet.insert_row(row, i+2)

代码 2

    row=list(df1.iloc[i])
    for j in range(len(row)):
        x = str(row[j])
        sheet.update_cell(i+2,j+1,x)

错误 1

TypeError: Object of type Series is not JSON serializable

任何帮助将不胜感激。

【问题讨论】:

  • 针对你的情况,作为一种方法,我推荐使用update_cells()。但是从您的脚本中,我无法正确理解您的情况。这是因为我的技术不好。我为此道歉。那么您能否提供row 的样本值和i 的信息。从他们那里,我想考虑一下解决方案。
  • 感谢您的帮助!我想将日期和数字字符串的 8x8 数据框更新到 Google 表格中。我想找到一种方法来一次更新整个表格,而不是一个单元一个单元。我也在这里尝试了 cmets 中的方法:stackoverflow.com/questions/52447671/… 但它给了我错误:'str' object has no attribute 'decode'。如果我取出解码部分,则会收到错误“列表索引超出范围”。抱歉 - 我对 Python 还是很陌生。
  • 感谢您的回复。很遗憾,根据您的附加信息,我无法了解您的情况以解决您的问题。我为我糟糕的英语水平道歉。

标签: json api gspread


【解决方案1】:

如果i是这种情况下的行号。

     n_rows, n_cols = df.shape
     for i in range(n_rows):
         row_values = list(df.iloc[i])

         # if you want to insert the value of the row at the index i
         sheet.insert_row(row_values,i)

【讨论】:

    猜你喜欢
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多