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) &lt;ipython-input-112-38fda511f5ba&gt; in &lt;module&gt; ----&gt; 1 dict(d.items().values()) AttributeError: 'dict_items' object has no attribute 'values' 你只需要查看----&gt; 就可以知道是哪一行代码给出了错误提示。 【参考方案1】:

我认为您的问题至少与多个列具有相同的列名(网站)间接相关。我发现了这个问题,因为我遇到了同样的问题。我注意到我有两个相同的列名,所以我使它们独一无二。这解决了我的问题。

【讨论】:

这里也一样!这让我发疯了。

以上是关于Pandas/BigQuery - TypeError:“str”和“int”实例之间不支持“<”的主要内容,如果未能解决你的问题,请参考以下文章

20171009

异常处理

反向标签编码给出错误

谷歌或工具:AddVariableMinimizedByFinalizer TypeError

Python - TypeError:'int'对象不可迭代

TypeError:无法读取未定义的属性(读取“公会”)