Pandas/BigQuery - TypeError:“str”和“int”实例之间不支持“<”
Posted
技术标签:
【中文标题】Pandas/BigQuery - TypeError:“str”和“int”实例之间不支持“<”【英文标题】:Pandas/BigQuery - TypeError: '<' not supported between instances of 'str' and 'int' 【发布时间】:2021-05-25 14:38:46 【问题描述】:我正在尝试将数据从熊猫加载到 BigQuery,但遇到以下错误:
Traceback(最近一次调用最后一次): 文件“pandas_libs\index.pyx”,第 112 行,在 pandas._libs.index.IndexEngine._get_loc_duplicates TypeError: '
我的代码是:
x = response['rows']
df = pd.DataFrame.from_dict(x)
# split the keys list into columns
df[['query','device', 'page', 'date']] = pd.DataFrame(df['keys'].values.tolist(), index= df.index)
# Drop the key columns
result = df.drop(['keys'],axis=1)
# Add a website identifier
result['website'] = site_url
result['country'] = "gbr"
result['ctr'] = 1.5
column_names = ["date", "query", "page", "clicks", "impressions", "ctr", "position", "website", "country", "device", "website"]
result = result.reindex(columns=column_names)
print(result.dtypes)
print(result)
# establish a BigQuery client
client = bigquery.Client.from_service_account_json(SERVICE_ACCOUNT_FILE)
dataset_id = BQ_DATASET_NAME
table_name = BQ_TABLE_NAME
# create a job config
job_config = bigquery.LoadJobConfig()
# Set the destination table
table_ref = client.dataset(dataset_id).table(table_name)
job_config.write_disposition = 'WRITE_APPEND'
load_job = client.load_table_from_dataframe(result, table_ref, job_config=job_config)
load_job.result()
据我所知,我没有尝试比较任何 str 或 int - 所以我不明白错误来自哪里。
我已经尝试检查熊猫的列类型,它们都是对象,除了两个(ctr 和位置。这似乎是正确的。
虽然我无法理解错误。如果我只显示数据框,它工作正常。一旦我尝试加载到 bigquery,我就会遇到上述错误。
有人可以建议吗?我一直在搜索过去一个小时,但找不到任何东西!
谢谢
【问题讨论】:
查看错误Trackback,有一行带箭头指向错误语句 这似乎来自我刚刚导入的熊猫文件——而不是通过我编写的任何代码。改这些正常吗? 有时可能是由您的代码生成的扩展代码导致的“间接”错误。因此,要跟踪您的代码,请使用箭头检查回溯。通常在回溯的顶部。 我有点不确定该怎么做 - 我应该查看哪个文件? 错误信息类似于:AttributeError: 'dict_items' object has no attribute 'values' --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-112-38fda511f5ba> in <module> ----> 1 dict(d.items().values()) AttributeError: 'dict_items' object has no attribute 'values'
你只需要查看---->
就可以知道是哪一行代码给出了错误提示。
【参考方案1】:
我认为您的问题至少与多个列具有相同的列名(网站)间接相关。我发现了这个问题,因为我遇到了同样的问题。我注意到我有两个相同的列名,所以我使它们独一无二。这解决了我的问题。
【讨论】:
这里也一样!这让我发疯了。以上是关于Pandas/BigQuery - TypeError:“str”和“int”实例之间不支持“<”的主要内容,如果未能解决你的问题,请参考以下文章
谷歌或工具:AddVariableMinimizedByFinalizer TypeError