如何通过 gspread 获取 Google sheet 的前 300 行
How to get first 300 rows of Google sheet via gspread
设置
我像这样从 google sheet 中的所有记录创建一个 Pandas 数据框,
df = pd.DataFrame(wsheet.get_all_records())
如 Gspread docs 中所述。
问题
从今天开始执行命令的时候,好像Python一直卡住了。我没有收到任何错误;过了一会儿,我用 KeyboardInterrupt
打断了 Python。
我怀疑Google发现记录太多; ±3500 行 18 列。
问题
现在,我其实并不真的需要整个 sheet。前 300 行就可以了。
文档显示 values_list = worksheet.row_values(1)
,这将 return 列表中的第一行值。
我想我可以创建一个循环,但我想知道是否有内置/更好的解决方案?
我使用了 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'
它几乎应有尽有。
这是文档的 link:https://openpyxl.readthedocs.io/en/stable/
我相信你的目标如下。
- 您想从 Google Spreadsheet 中的 sheet 检索第 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”时,会从 Spreadsheet.
的第一个选项卡中检索值
当使用“A1:300”时,取值是从“A”列到sheet的最后一列。
当第1行为表头行,数据在第2行之后,请修改如下
来自
df = pd.DataFrame(v)
到
df = pd.DataFrame(v[1:], columns=v[0])
参考:
设置
我像这样从 google sheet 中的所有记录创建一个 Pandas 数据框,
df = pd.DataFrame(wsheet.get_all_records())
如 Gspread docs 中所述。
问题
从今天开始执行命令的时候,好像Python一直卡住了。我没有收到任何错误;过了一会儿,我用 KeyboardInterrupt
打断了 Python。
我怀疑Google发现记录太多; ±3500 行 18 列。
问题
现在,我其实并不真的需要整个 sheet。前 300 行就可以了。
文档显示 values_list = worksheet.row_values(1)
,这将 return 列表中的第一行值。
我想我可以创建一个循环,但我想知道是否有内置/更好的解决方案?
我使用了 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'
它几乎应有尽有。 这是文档的 link:https://openpyxl.readthedocs.io/en/stable/
我相信你的目标如下。
- 您想从 Google Spreadsheet 中的 sheet 检索第 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”时,会从 Spreadsheet.
的第一个选项卡中检索值当使用“A1:300”时,取值是从“A”列到sheet的最后一列。
当第1行为表头行,数据在第2行之后,请修改如下
来自
df = pd.DataFrame(v)
到
df = pd.DataFrame(v[1:], columns=v[0])