【问题标题】:Multiple Spreadsheets with Gspread使用 Gspread 的多个电子表格
【发布时间】:2020-04-27 17:30:01
【问题描述】:

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

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

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

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

【问题讨论】:

  • 我可以问你关于你的问题吗?我无法理解I would like to parse through each spreadsheet, pull the data, and generate a single data frame with the data.。您能否提供您期望的示例输入和输出值?
  • 是的。对困惑感到抱歉。我只是试图用电子表格的内容创建一个数据框。电子表格的所有内容都将在数据框中表示。我想先用电子表格 1 填充数据框,然后附加电子表格 2 中的数据,依此类推。我希望这能解决问题。
  • 感谢您的回复。我不得不为我糟糕的英语水平道歉。在这种情况下,我认为了解每张工作表的表结构有助于思考解决方案。例如,是否有标题行?而且,所有工作表中的所有列都相同吗?而且,您希望如何合并每张工作表中的数据的顺序?不幸的是,从您的问题和回复中,我无法理解它们。所以我问了你期望的输入和输出样本。
  • 任何电子表格中都没有标题行。每个电子表格中有 4 列,并且它们在每个电子表格中都是相同的。每个电子表格大约有 100 行。我希望从电子表格 (1) 中加载所有 100 行,然后从电子表格 (2) 中添加 100 行,依此类推。
  • 感谢您的回复。根据您的回复,我提出了一个示例脚本作为答案。你能确认一下吗?如果我误解了您的目标并且这不是您想要的方向,我深表歉意。

标签: python google-sheets-api gspread


【解决方案1】:

在此处混合使用您的起始代码和@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)

希望我是清楚的。

【讨论】:

    【解决方案2】:

    我相信你的目标如下。

    • 您想要合并从 Google 电子表格中的所有工作表中检索到的值。
    • 您希望将检索到的值转换为数据框。
    • 每张工作表有 4 列,100 行,没有标题行。
    • 您希望使用 gspread 和 python 来实现此目的。
    • 您已经能够使用 Sheets API 为 Google 电子表格获取和输入值。

    对于这个,这个答案怎么样?

    流程:

    1. 使用 worksheets() 检索 Google 电子表格中的所有工作表。
    2. 使用get_all_values() 检索所有工作表中的所有值并合并这些值。
    3. 将检索到的值转换为数据框。

    示例脚本:

    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)
    

    参考资料:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多