gpt4 book ai didi

python - Google BigQuery Schema 冲突(pyarrow 错误)与使用 load_table_from_dataframe 的数字数据类型

转载 作者:行者123 更新时间:2023-12-05 01:12:48 25 4
gpt4 key购买 nike

当我将数值数据(int64 或 float64)从 Pandas 数据帧上传到 “Numeric” Google BigQuery 数据类型时,出现以下错误:

pyarrow.lib.ArrowInvalid: Got bytestring of length 8 (expected 16)

我试图从 Pandas 数据框中更改“tt”字段的数据类型,但没有结果:

df_data_f['tt'] = df_data_f['tt'].astype('float64')

df_data_f['tt'] = df_data_f['tt'].astype('int64')

使用架构:

 job_config.schema = [
...
bigquery.SchemaField('tt', 'NUMERIC')
...]

阅读本文google-cloud-python issues report我得到了:

NUMERIC = pyarrow.decimal128(38, 9)

因此 “Numeric” Google BigQuery 数据类型使用的字节数比“float64”或“int64”多,这就是 pyarrow 无法匹配数据类型的原因。


我有:

Python 3.6.4

pandas 1.0.3

pyarrow 0.17.0

google-cloud-bigquery 1.24.0

最佳答案

我不确定这是否是最佳解决方案,但我通过更改数据类型解决了这个问题:

import decimal
...
df_data_f['tt'] = df_data_f['tt'].astype(str).map(decimal.Decimal)

关于python - Google BigQuery Schema 冲突(pyarrow 错误)与使用 load_table_from_dataframe 的数字数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61421702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com