首页 > 解决方案 > 将数据帧上传到 bigquery 时,日期类型的对象不是 JSON 可序列化错误?

问题描述

我正在尝试将数据框从 python 上传到 biguquery。我收到以下错误。

日期类型的对象不是 JSON 可序列化的

下面是示例数据框。

product_id  01/05/19    02/05/19    03/05/19
1             187668    191568      189098
2             331527    341754      340158
3             68904      65808      65484
4             32500      38012      36816
5             82677      92106       92148

标签: pythonpandasgoogle-bigquery

解决方案


您需要将列的标签转换为可接受的列名

列名

列名只能包含字母(az、AZ)、数字(0-9)或下划线(_),并且必须以字母或下划线开头。最大列名长度为 128 个字符。

table_schema您可以通过使用以下参数来做到这一点to_gbq

 df.to_gbq('db_name.table_name', 
           project_id='xyz', 
           if_exists='append', 
           verbose=False, 
           table_schema=[{'name': '_' + str(col).replace('-','_'), 'type': 'INT64'} 
                         for col in df.columns]
 )

推荐阅读