如何使用“DATE”类型将 pandas 数据框推送到 bigquery?

Posted

技术标签:

【中文标题】如何使用“DATE”类型将 pandas 数据框推送到 bigquery?【英文标题】:How to push a pandas dataframe to bigquery with `DATE` types? 【发布时间】:2020-09-04 20:59:32 【问题描述】:

所以我有一个如下所示的数据框:

2020-08-23  3956.5801   3244.0070
2020-08-24  3674.2331   2860.3648
2020-08-25  3422.3573   2953.4077
2020-08-26  4493.0424   2876.9254
2020-08-27  3941.6706   2849.1039
2020-08-28  3799.7326   2682.6734
2020-08-29  4062.6515   2863.2884
2020-08-30  3775.3997   2970.6699
2020-08-31  3405.6144   3071.7572
2020-09-01  3630.2723   2651.4049

date 列当前为日期时间类型。当我将此推送到 BQ 时,它在 BigQuery 上变为 TIMESTAMP。我尝试仅使用将其转换为日期 df.date = pd.to_datetime(df.date).dt.date 并且它被转换了,但是当我按下它时,它变成了STRING。许多仪表板都在使用它,所以我不能在数据类型上妥协。我也不能继续手动导出 csv 并导入到 bigquery 中,因为以编程方式推送它的重点是制作一个可以按计划执行此操作的脚本。当前的解决方法是制作一个 csv 并自动推断架构。

【问题讨论】:

【参考方案1】:

如果您使用pandas.to_gbq,您可以将架构作为参数提供:

schema = [
    'name': 'date', 'type': 'DATE'
    'name': 'close_high', 'type': 'FLOAT64',
    'name': 'close_low', 'type': 'FLOAT64'
]

df['date'] = pd.to_datetime(df['date']).dt.date  # try skipping this line as well
df.to_gqb(tablename, project_id, table_schema=schema)

【讨论】:

谢谢!这解决了我的问题,并且指定架构也可以作为其他数据类型的魅力 我知道当我将 df 附加到 BigQuery 时需要设置 table_schema

以上是关于如何使用“DATE”类型将 pandas 数据框推送到 bigquery?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

如何将字符添加到 pandas 列中的日期或 str?

熊猫:将时间戳转换为 datetime.date

熊猫中的 Xlsxwriter 和熊猫锁定之外

如何在 pandas python 中将字符串转换为日期时间格式?

pandas使用date_range函数生成日期序列数据pandas将两个日期序列数据作差生成新的日期差数据列(8 days)并提取天数数值