尝试使用 pandas 数据框将数据附加到 BigQuery 表时出错
Posted
技术标签:
【中文标题】尝试使用 pandas 数据框将数据附加到 BigQuery 表时出错【英文标题】:Error while trying to append data to a BigQuery table using pandas data frame 【发布时间】:2021-06-01 06:06:35 【问题描述】:我有一个看起来像这样的 pandas 数据框:
它有 6 列。我尝试将其附加到 BigQuery 中具有相同架构的现有表中:
import os
from google.cloud import bigquery
# Login credentials
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="secret.json"
# Initialize big query
client = bigquery.Client()
# Table information
project = "xxxxxxxx"
dataset = "Vahan"
table = "rto_data"
table_id = '..'.format(project, dataset, table)
# Setup for upload
job_config = bigquery.LoadJobConfig()
# Define the table schema
schema = [bigquery.SchemaField(name='State', field_type='STRING', mode='NULLABLE'),
bigquery.SchemaField(name='RTO', field_type='STRING', mode='NULLABLE'),
bigquery.SchemaField(name='Registration_Number', field_type='STRING', mode='NULLABLE'),
bigquery.SchemaField(name='Maker', field_type='STRING', mode='NULLABLE'),
bigquery.SchemaField(name='Date', field_type='DATE', mode='NULLABLE'),
bigquery.SchemaField(name='Registrations', field_type='INTEGER', mode='NULLABLE')]
job_config.create_disposition = "CREATE_IF_NEEDED"
# Make the API request
load_result = client.load_table_from_dataframe(dataframe=df,
destination=table_id,
job_config=job_config)
# Wait for query to finish working
load_result.result()
# Make an API request.
table = client.get_table(table_id)
# Output
print("Loaded rows and columns to ".format(table.num_rows, len(table.schema), table_id))
我收到此错误:BadRequest: 400 Provided Schema does not match Table advanced-analytics-123456:Vahan.rto_data. Cannot add fields (field: __index_level_0__)
我将数据放在一个新表中,看起来查询正在添加一个名为__index_level_0__
的随机新列
如何解决此问题,以便将数据附加到现有表中?非常感谢您的帮助!
【问题讨论】:
【参考方案1】:也许您的数据框中有 __index_level_0__
列?
尝试删除索引:
df.reset_index(drop=True, inplace=True)
【讨论】:
以上是关于尝试使用 pandas 数据框将数据附加到 BigQuery 表时出错的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用浏览器工具将数据附加到 Google Big 查询中的现有表吗?