【问题标题】:How can i add rows in a sheet from a dataframe (using pygsheets) without changing the number of columns in the worksheet?如何在不更改工作表中列数的情况下从数据框中(使用 pygsheets)在工作表中添加行?
【发布时间】:2021-06-17 21:28:03
【问题描述】:

我正在尝试将数据框中的行添加到谷歌表格中,我正在使用 python2 和 pygsheets。我的 google 表格中有 10 列,数据框中有 6 列,我的问题是当我在表格中添加行时,它会删除表格中的 4 额外列

所以这段代码应该在工作表中添加df的行数(没有任何内容的行)

import pygsheets
import pandas as pd

sh = gc.open_by_key('xxxx')
worksheet = sh.worksheet('RawData')
rows= df.shape[0]
worksheet.add_rows(df)

代码确实可以工作,但将表格网格拟合到 df 之一。

有人知道在工作表中添加确切数量的行并保持工作表列完整的解决方案吗?

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。不幸的是,我无法理解您的问题。那么,您能否提供您期望的示例输入和输出情况作为图像?另外,您能否提供示例当前情况作为图像?借此,我想尝试了解您的问题。
  • @Tanaike 是的,当然!所以我的工作表有 10 列(a、b、c、d、e、f、g、h、i、j、k),我的数据框有 6 列(a、b、c、d、e、f)。我的目标是将我的数据框的行数添加到工作表中(而不是行的内容),我遇到的问题是,当我运行代码时,它会删除工作表的其他 4 列(h, i,j,k) 将其拟合到我的 df 的列数。所以我只想将行数添加到工作表中而不更改工作表的列。我不能提供截图:/但我希望我的解释更清楚提前谢谢!
  • 感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,我仍然无法理解您目前的情况。那么,你能提供你当前的脚本来复制你的问题吗?通过这个,我想尝试理解它。不幸的是,我无法从您问题中显示的当前脚本中了解您当前的情况。对此我深表歉意。
  • 总是将完整的错误消息(从单词“Traceback”开始)作为文本(不是截图,不是链接到外部门户)有问题(不是评论)。还有其他有用的信息。
  • 为这个问题创建最少的工作代码——这样我们就可以复制并运行它。并在代码中添加一些示例数据。

标签: python dataframe google-sheets google-sheets-api pygsheets


【解决方案1】:

我相信你的目标如下。

  • 在您的情况下,Google 电子表格中有 10 列。
  • 对于此电子表格,您希望附加数据框中包含 6 列的值。
    • 在这种情况下,您不想删除电子表格中的其他 4 列。
  • 您想使用 python 的 pygsheets 来实现这一点。

这样的话,下面的流程呢?

  1. 将数据框转换为列表。
  2. 将列表放入电子表格。

当这个流程反映到脚本中时,变成如下。

示例脚本:

df = ### <--- Please set your dataframe.

sh = gc.open_by_key('xxxx')
worksheet = sh.worksheet('RawData')
values = df.values.tolist()
worksheet.append_table(values, start='A1', end=None, dimension='ROWS', overwrite=False)

如果要包含标题行,请使用以下脚本。

df = ### <--- Please set your dataframe.

sh = gc.open_by_key('xxxx')
worksheet = sh.worksheet('RawData')
values = [df.columns.values.tolist()]
values.extend(df.values.tolist())
worksheet.append_table(values, start='A1', end=None, dimension='ROWS', overwrite=False)
  • 在上面的脚本中,值来自工作表RawData 的第一个空行。
  • 并且,当使用overwrite=False时,会添加values的相同行数的新行。

参考:

【讨论】:

  • 感谢@Tanaike!但我得到了这个错误,正是使用你编写的代码行。你知道为什么会这样吗? TypeError: append_table() got multiple values for keyword argument 'start'
  • @Karime Ale 感谢您的回复。我带来的不便表示歉意。不幸的是,我无法复制您TypeError: append_table() got multiple values for keyword argument 'start' 的情况。这是因为我的技术不好。我对此深表歉意。那么,为了正确了解您当前的情况并复制您的问题,您能否提供您当前的脚本(包括df 的值)来复制您的问题?如果可以,请将其添加到您的问题中。借此,我想确认一下。当你能合作解决你的问题时,我很高兴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
相关资源
最近更新 更多