web-dev-qa-db-ja.com

pandasデータフレームをGoogleスプレッドシートにアップロードしています

手順 here および here を実行しましたが、pandas dataframeにデータフレームをアップロードできませんでした。

最初に私は次のコードを試しました:

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に実際にuploadという関数があるため、意味がありません。

次に、列名を入力するだけで、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)

どんな助けでも感謝します、ありがとう!

2
realkes

パッケージを正しくインポートしていません。

これをしてください

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)
1
Suyash Gupte