こんにちは
python初心者です
スプレッドシート×pandasで日付の処理に困っており、質問させてください
以下のエクセルを
df1 として読み込んだ際に
|商品名|発売日|発送日|配送|
|:--|:--:|--:|
|A|2020/7/10 12:00|2020/7/20 12:00|A社|
|B|2020/7/18 12:00|2020/7/24 12:00|A社|
|C|未定|未定|A社|
上記のデータをスプレッドシートの特定シートの特定セルに張り付けるために下記コードを書きました
python
1 2 3#df1の最終行列の把握 4col_lastnum = len(df1.columns) 5row_lastnum = len(df1.index) 6 7#--------------------------------------------------------------------------------------------------------------------# 8#スプレッドシートの準備 9#--------------------------------------------------------------------------------------------------------------------# 10 11#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。 12from oauth2client.service_account import ServiceAccountCredentials 13 14#2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行し続けなければならない 15scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive'] 16 17#認証情報設定 18#ダウンロードしたjsonファイル名をクレデンシャル変数に設定(秘密鍵、Pythonファイルから読み込みしやすい位置に置く) 19credentials = ServiceAccountCredentials.from_json_keyfile_name(r'C:\Users\xxxxxxx\Desktop\12_pyworks\python.json', scope) 20 21#OAuth2の資格情報を使用してGoogle APIにログインします。 22gc = gspread.authorize(credentials) 23 24#共有設定したスプレッドシートキーを変数[SPREADSHEET_KEY]に格納する。 25SPREADSHEET_KEY = 'xxxxxxxxxxxxxxxxxxxxx' 26 27#共有設定したスプレッドシートのテストシートを開く 28ws = gc.open_by_key(SPREADSHEET_KEY).worksheet('テスト') 29 30#更新するセル範囲 df1の範囲を考慮に入れて算出 31cell_list = ws.range('A1:D'+str(row_lastnum)) 32 33#--------------------------------------------------------------------------------------------------------------------# 34#df1のデータをスプレッドシートに書き込み 35#--------------------------------------------------------------------------------------------------------------------# 36 37#セルリストの範囲にdf1の値を代入していく 38for cell in cell_list: 39 values = df1.iloc[cell.row-1][cell.col-1] 40 cell.value = values 41ws.update_cells(cell_list) 42
エラー内容
TypeError: Object of type datetime is not JSON serializable
日付データがJSONで定義されていないため、エラーが発生しているようです
※df1.dtypesで確認すると全ての情報がobjectとなっております
発売日と発送日の日付に”未定”というテキストもが入っているのですが、
うまくスプレッドシートに移行させることは可能でしょうか。
df1で読み込んだエクセル内容を変更することはできません。
試してみたこと
日付の形式を変えてみようと思ったのですがテキストが入っているため変換などもできず・・。
python
1df1['発売日']=pd.to_datetime(df1['発売日']) 2df1['発送日']=pd.to_datetime(df1['発送日']) 3 4**エラー** 5Unknown string format: 未定 6
何かアドバイスなどいただけると大変助かります。
お忙しいところ恐縮ですが、よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/07 00:42
2020/07/07 02:45 編集
2020/07/07 03:23
2020/07/07 06:48