【问题标题】:How to get first 300 rows of Google sheet via gspread如何通过 gspread 获取前 300 行 Google 表格
【发布时间】:2020-11-11 00:09:32
【问题描述】:

设置

我从谷歌表格中的所有记录中创建了一个 Pandas 数据框,

df = pd.DataFrame(wsheet.get_all_records())

Gspread docs 中所述。


问题

从今天开始,当我执行命令时,Python 似乎一直处于不确定状态。我没有收到任何错误;过了一会儿,我用KeyboardInterrupt 打断了Python。

我怀疑 Google 查找的记录太多; ±3500 行,18 列。


问题

现在,我实际上并不需要整张纸。前 300 行就可以了。

文档显示values_list = worksheet.row_values(1),它将返回列表中的第一行值。

我想我可以创建一个循环,但我想知道是否有内置/更好的解决方案?

【问题讨论】:

  • batch_get() 适合你吗?
  • 事实上,如果你只有一个单元格范围,get() 也应该可以工作

标签: python google-sheets-api gspread


【解决方案1】:

我相信你的目标如下。

  • 您想从 Google 电子表格的工作表中检索第 1 行到第 300 行的值。
    • I suspect Google finds the records too much; ±3500 rows with 18 columns.,您要检索“A”到“R”列中的值吗?
  • 您希望将检索到的值转换为数据帧。
  • 您想使用 gspread 实现此目的。

为了实现这一点,我想提出以下示例脚本。

在这个答案中,我使用了values_get的方法。

示例脚本:

spreadsheetId = "###"  # Please set the Spreadsheet ID.
rangeA1notation = "Sheet1!A1:R300"  # Please set the range using A1Notation.

client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
values = spreadsheet.values_get(rangeA1notation)
v = values['values']
df = pd.DataFrame(v)
print(df)

注意:

  • 请将范围设置为 A1Notation。在这种情况下,当使用“A1:R300”而不是“Sheet1!A1:R300”时,将从电子表格的第一个选项卡中检索值。

  • 当使用“A1:300”时,值从“A”列检索到工作表的最后一列。

  • 当第一行是标题行,数据在第二行之后,请修改如下。

    • 来自

        df = pd.DataFrame(v)
      
    •   df = pd.DataFrame(v[1:], columns=v[0])
      

参考:

【讨论】:

    【解决方案2】:

    我使用了 openpyxl 包。

    import openpyxl as xl

    wb = xl.load_workbook('your_file_name')>
    sheet = wb['name_of_your_sheet']

    指定您的范围。
    for row in range(1, 300):

    现在您可以执行许多操作,例如这将在第一次迭代中指向 row(1) 和 col(3)
    cell = sheet.cell(row, 3)

    如果要更改单元格值
    cell.value = 'something'

    它几乎拥有所有这些。 这是文档的链接:https://openpyxl.readthedocs.io/en/stable/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多