Python 使用数组结构将数据帧上载到BigQuery

Python 使用数组结构将数据帧上载到BigQuery,python,google-bigquery,pyarrow,Python,Google Bigquery,Pyarrow,我有一个包含3列的熊猫数据框架:col1包含列表,col2包含字典,col3包含NAN: dict_ = {'col1': [['abc'], ['def', 'ghi'], []], 'col2': [{'k1': 'v1', 'k2': 'v2'}, {'k1': 'v3', 'k2': 'v4'}, {'k1': 'v5', 'k2': 'v6'}], 'col3': [np.nan

我有一个包含3列的熊猫数据框架:col1包含列表,col2包含字典,col3包含NAN:

dict_ = {'col1': [['abc'], ['def', 'ghi'], []],
         'col2': [{'k1': 'v1', 'k2': 'v2'},
                  {'k1': 'v3', 'k2': 'v4'},
                  {'k1': 'v5', 'k2': 'v6'}],
         'col3': [np.nan, np.nan, np.nan]}
df = pd.DataFrame(dict_)
将DataFrame上载到BigQuery时,我将为第一列和第二列创建以下模式:

schema = [
bigquery.SchemaField(name="col1", field_type="STRING", mode='REPEATED'),
bigquery.SchemaField(name="col2", field_type="RECORD", mode='NULLABLE',
                     fields=[bigquery.SchemaField(name="k1", field_type="STRING", mode='NULLABLE'),
                             bigquery.SchemaField(name="k2", field_type="STRING", mode='NULLABLE')])
]
job_config = bigquery.LoadJobConfig(write_disposition="WRITE_TRUNCATE", schema=schema)
job = client.load_table_from_dataframe(df, table, job_config=job_config)
job.result()
数据帧已上载,但col1为空

表格预览:

我应该怎么做才能解决这个问题?

Python客户端库中用于BigQuery的load\u table\u from\u dataframe方法将数据帧序列化到拼花地板。不幸的是,BigQuery后端对数组数据类型的支持有限

作为一种解决方法,我推荐这种方法

作为pd进口熊猫 将numpy作为np导入 从google.cloud导入bigquery 格言{'col1':['abc'],['def','ghi'],[], 'col2':[{'k1':'v1','k2':'v2'}, {'k1':'v3','k2':'v4'}, {'k1':'v5','k2':'v6'}, 'col3':[np.nan,np.nan,np.nan]} df=pd.DataFramedict_ client=bigquery.client 模式=[ bigquery.SchemaFieldname=col1,字段类型=STRING,模式为重复, bigquery.SchemaFieldname=col2,字段类型=RECORD,模式为空, fields=[bigquery.SchemaFieldname=k1,field_type=STRING,mode='NULLABLE', bigquery.SchemaFieldname=k2,字段类型=STRING,mode='NULLABLE'] ] table=bigquery.table my-project.my_dataset.stackoverflow66054651, 模式=模式 client.create_tabletable 错误=client.insert_rows_from_dataframetable,df 对于错误中的块: 打印错误{lenchunk}错误:{chunk} 已加载的_df=client.query 使用查询以便从流式缓冲区读取数据。 从“my-project.my_dataset.stackoverflow66054651”中选择*` .to_数据帧 打印输出 资源:

已知客户端库问题:
谢谢,这对我有用。