如何使用“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 python 中将字符串转换为日期时间格式?
pandas使用date_range函数生成日期序列数据pandas将两个日期序列数据作差生成新的日期差数据列(8 days)并提取天数数值