Gspread 的多个电子表格

Multiple Spreadsheets with Gspread

我是 Python 的新手,我正在使用 gspread 和 Google Sheets。我有几个电子表格,我想从中提取数据。它们都具有相同的名称并附加了数值(例如,SpreadSheet(1)、SpreadSheet(2)、SpreadSheet(3) 等)

我想解析每个电子表格,提取数据,并用数据生成一个数据框。我可以用一个电子表格很容易地做到这一点,但我很难用多个电子表格来做到这一点。

我可以使用下面的代码创建电子表格标题列表,但我不确定这是否是正确的方向。

titles_list = []
for spreadsheet in client.openall():
    titles_list.append(spreadsheet.title)

我相信你的目标如下。

  • 您想将从所有 sheet 中检索到的值合并到 Google Spreadsheet.
  • 您想将检索到的值转换为数据框。
  • 每个 sheet 有 4 列,100 行,没有 header 行。
  • 您想使用带有 python 的 gspread 来实现此目的。
  • 您已经能够使用 Sheets API.
  • 获取和放置 Google Spreadsheet 的值

为此,这个答案怎么样?

流量:

  1. 使用 worksheets().
  2. 检索 Google Spreadsheet 中的所有 sheet
  3. 使用 get_all_values() 从所有 sheet 中检索所有值并合并这些值。
  4. 将检索到的值转换为数据框。

示例脚本:

spreadsheetId = "###"  # Please set the Spreadsheet ID.

client = gspread.authorize(credentials)
spreadsheet = client.open_by_key(spreadsheetId)
worksheets = spreadsheet.worksheets()
values = []
for ws in worksheets:
    values.extend(ws.get_all_values())
df = pd.DataFrame(values)
print(df)

参考文献:

在这里混合使用您的起始代码和@Tanaike 的回答,您将得到一段代码,可以满足您的期望。

# Create an authorized client
client = gspread.authorize(credentials)
# Create a list to hold the values
values = []
# Get all spreadsheets
for spreadsheet in client.openall():
    # Get spreadsheet's worksheets
    worksheets = spreadsheet.worksheets()
    for ws in worksheets:
        # Append the values of the worksheet to values
        values.extend(ws.get_all_values())
# create df from values
df = pd.DataFrame(values)
print(df)

希望我说清楚了。