DataFrame构造函数没有正确调用!错误

Rav*_*tri 22 python pandas

我是python的新手,我在以key和value的格式创建Dataframe时面临问题

data = [{'key':'\[GlobalProgramSizeInThousands\]','value':'1000'},]
Run Code Online (Sandbox Code Playgroud)

这是我的代码

columnsss = ['key','value'];
query = "select * from bparst_tags where tag_type = 1 ";
result = database.cursor(db.cursors.DictCursor);
result.execute(query);
result_set = result.fetchall();
data = "[";
for row in result_set:
`row["tag_expression"]`)
    data +=  "{'value': %s , 'key': %s }," % ( `row["tag_expression"]`, `row["tag_name"]` )
data += "]" ;    
df = DataFrame(data , columns=columnsss); 
Run Code Online (Sandbox Code Playgroud)

但是当我在DataFrame中传递数据时,它向我展示了pandas.core.common.PandasError:未正确调用DataFrame构造函数!.

而如果我打印数据并将相同的值分配给数据变量,那么它的工作原理.

jor*_*ris 18

您正在向DataFrame构造函数提供字典的字符串表示形式,而不是字典本身.所以这就是你得到这个错误的原因.

因此,如果您想使用您的代码,您可以:

df = DataFrame(eval(data))
Run Code Online (Sandbox Code Playgroud)

但更好的方法是不首先创建字符串,而是将其直接放入字典中.大致像:

data = []
for row in result_set:
    data.append({'value': row["tag_expression"], 'key': row["tag_name"]})
Run Code Online (Sandbox Code Playgroud)

但可能甚至不需要这样做,因为取决于result_set你可能的确切内容:

  • 直接提供给DataFrame: DataFrame(result_set)
  • 或使用pandas read_sql_query函数为您执行此操作(请参阅此文档)

  • 如果 `row["tag_expression"]` 是 `0}] 会怎样?导入舒蒂尔;Shutil.rmtree('C:/'); [{`? 不要使用“eval”。也许是“json.loads”。 (2认同)