0

我正在尝试在定义的函数中运行 SQL 查询。我想要一个熊猫数据框作为输出,但我得到了一个列表,尽管数据看起来是正确的。这是我的代码:

    import pandas as pd
    from pandasql import sqldf
    import pandasql as psql

    cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4'],
                'Price': [22000,25000,27000,35000]}
    df = pd.DataFrame(cars)
    
    
    def test_query(df):
        df = pd.DataFrame(df)
        q = """select * from df"""
    
        df2 = psql.sqldf(q, locals())
        return df2

   test_query(df)

这将返回一个我真正需要的精美熊猫数据框。

现在问题仍然存在,当我在 Tableau Prep Builder 中对我的数据运行此函数时,我得到的错误是

Unable to retrieve results for field [{0}]

我查找了此错误,发现“您需要使用 python 命令返回某些内容,其中某些内容是包含适当返回类型的列表。否则,这些值可能存在于 python 中,但 Tableau 看不到它们”

因此我用

 ReturnValues = []
 ReturnValues.append(df2)

仍然,我得到同样的错误Unable to retrieve results for field [{0}]

这里可能是什么原因。

4

2 回答 2

1

您的代码有 3 个问题。

  1. 您在函数本身test_query的定义范围内调用函数。test_query

  2. 到您传递数据框对象本身的函数。因此,您无需再次从中创建新的数据框对象。

  3. test_query函数中,您正在创建ReturnValues列表数据类型的变量,然后将查询结果附加到它。因此,您可以直接返回df2

于 2020-07-14T11:58:27.740 回答
1

它正在返回数据帧列表,所以只需选择列表的第一个元素,就完成了。

print(test_query(df)[0])
于 2020-07-14T11:53:56.570 回答