如何使用Python将Pandas数据框导出到Google工作表(特定单元格)?

dxxyhpgq  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(89)
  • 我可以读数据和写数据到谷歌工作表。
  • 我也可以写一个Pandas Dataframe 到谷歌工作表cell(1,1)

我现在尝试将相同的 Dataframe 写入工作表上的特定单元格(如cell(20,20))。
资源:

  • 此链接是关闭的,但仅引用工作表而不指定单元格:How can I Export Pandas DataFrame to Google Sheets using Python?
  • 文档在这里,但是示例似乎只引用了一个工作表(因此结果还是cell(1,1)):www.example.comhttps://docs.gspread.org/en/latest/user-guide.html#using-gspread-with-pandas

我所尝试的:

  • 我已尝试使用 Dataframe 修改update_cell命令。
# this works
sh.sheet1.update_cell(20,20,'hello world')

# but this fails

# example dataframe
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)

# write to a specific cell
sh.sheet1.update_cell(20,20,df)

所以我的问题是,如何指定panda Dataframe写入的单元格?

hc2pp10m

hc2pp10m1#

看起来数据框不能直接用于update_cell(row, col, value)value. Ref那么,在你的脚本中,下面的修改怎么样?

发件人:

sh.sheet1.update_cell(20,20,df)

收件人:

sh.sheet1.update("T20", [df.columns.values.tolist(), *df.values.tolist()], value_input_option="USER_ENTERED")

或者,如果您不想包含标题行,请测试以下修改。

sh.sheet1.update("T20", df.values.tolist(), value_input_option="USER_ENTERED")
  • 我以为sh.sheet1.update_cell(20,20,df)20,20是一个细胞"T20"。

注:

  • 从您显示的脚本中,我猜您使用的是gspread

参考:

  • 更新(范围名称,值=无,**kwargs)

添加:

关于你接下来的问题,
一个问题:用户是否可以用单元格引用替换"t20"(如单元格(10,20))?
如果你想用像20, 20这样的坐标作为"T20",下面的修改怎么样?

sh.sheet1.update(gspread.utils.rowcol_to_a1(20, 20), [df.columns.values.tolist(), *df.values.tolist()], value_input_option="USER_ENTERED")

sh.sheet1.update(gspread.utils.rowcol_to_a1(20, 20), df.values.tolist(), value_input_option="USER_ENTERED")
  • 在这种情况下,gspread.utils.rowcol_to_a1(20, 20)被转换为"T20"。

参考:

  • 行列至a1(行,列)

相关问题