将熊猫数据框上传到Google电子表格

时间:2020-04-08 03:01:02

标签: python pandas google-sheets google-sheets-api gspread

我遵循了herehere的步骤,但无法将熊猫数据框上传到Google表格。

首先,我尝试了以下代码:

import gspread
from google.oauth2.service_account import Credentials

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']

credentials = Credentials.from_service_account_file('my_json_file_name.json', scopes=scope)

gc = gspread.authorize(credentials)

spreadsheet_key = '1FNMkcPz3aLCaWIbrC51lgJyuDFhe2KEixTX1lsdUjOY'
wks_name = 'Sheet1'
d2g.upload(df_qrt, spreadsheet_key, wks_name, credentials=credentials, row_names=True)

上面的代码返回如下错误消息:AttributeError: module 'df2gspread' has no attribute 'upload',因为df2spread确实具有称为上载的功能,所以这没有意义。

第二,我试图通过仅输入列名将数据附加到在Google工作表上人为创建的数据框。这也不起作用,也没有提供任何结果。

import gspread_dataframe as gd

ws = gc.open("name_of_file").worksheet("Sheet1")
existing = gd.get_as_dataframe(ws)
updated = existing.append(df_qrt)
gd.set_with_dataframe(ws, updated)

任何帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:2)

您没有正确导入软件包。

只需这样做

from df2gspread import df2gspread as d2g

当您使用将工作表转换为数据框时

existing = gd.get_as_dataframe(ws)

工作表中的所有空白列和行现在都是数据框的一部分,其值为NaN,因此当您尝试将其附加到另一个数据框时,由于列不匹配,因此不会附加该数据框。 而是尝试将其隐瞒工作表到数据框

existing = pd.DataFrame(ws.get_all_records())

当您在Google表格中导出数据框时,数据框的索引存储在第一列中(在我的情况下,这种情况无法确定)。 如果第一列是索引,则可以使用

删除该列
existing.drop([''],axis=1,inplace=True)

这将正常工作。

updated = existing.append(df_qrt)
gd.set_with_dataframe(ws, updated)