

スプレッドシートのAPIを用いてデータフレームをスプレッドシートの最下部に追記したいのですが、うまい方法はなにかあるでしょうか。

### やりたいこと

データフレームをスプレッドシートの最下部に追加したい

**コード:**

[code]

    import pandas as pd
    import gspread
    import csv
    import json
    from oauth2client.service_account import ServiceAccountCredentials
    from gspread_dataframe import get_as_dataframe, set_with_dataframe
    
    df = pd.read_csv('a.csv')
    
    SPREADSHEET = '対象スプレッドシート'
    WORKSHEET = 'Sheet1'
    
    sh = gc.open_by_key(SPREADSHEET)
    sh.values_append(WORKSHEET,{'valueInputOption': 'USER_ENTERED'},{'values': df.values.tolist()})
    
[/code]

dfには対象のデータフレームが入っております。

**エラー内容:**

[code]

    gspread.exceptions.APIError: {'code': 400, 'message': 'Invalid JSON payload received. Unexpected token.\n.0, 13500, 50490.0, NaN, NaN, NaN, NaN, \n                    ^', 'status': 'INVALID_ARGUMENT'}
    
[/code]

スプレッドシートのJSONファイルも正しく指定・格納されている状態です

**データフレームイメージ:**

Aさん 30歳 男性  
Bさん 25歳 男性

色々調べたのですが、同様のエラーが見当たらずご教授いただけますと幸いです。


CC BY-SA 4.0
2022-05-24T03:24:02.627
89014
2023-08-09T10:05:30.663
2022-05-25T05:18:22.010
3060
51063
question
python pandas google-spreadsheet
pandasのデータフレームをスプレッドシートへ反映したい


colabでなら簡単です。ローカル pythonから直接使ったことがないため比較はできないけれど  
デメリット

  * pythonのバージョンが少し低い
  * ローカルデータがある場合, google-drive経由などになること

[code]

    from google.colab import auth
    auth.authenticate_user()
    
    import gspread
    from google.auth import default
    creds, _ = default()
    
    gc = gspread.authorize(creds)
    
    import pandas as pd
    worksheet = gc.open('タイトル').sheet1
    
    df = pd.DataFrame({'名前': ['A', 'B'], '年齢': [30, 25], '性別': ['男', '男']})
    display(df)
    worksheet.append_rows([df.columns.values.tolist()] +df.values.tolist())
    
[/code]


CC BY-SA 4.0
2022-05-24T05:15:49.150
89015
2022-05-24T05:15:49.150
43025
89014
answer