我是python的新手,我在以密钥和值的格式创建Dataframe时面临问题,即
data = [{'key':'\[GlobalProgramSizeInThousands\]','value':'1000'},]
这是我的我的代码
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);
但是当我在DataFrame中传递数据时,它向我显示 pandas.core.common.PandasError:未正确调用DataFrame构造函数!。
如果我打印数据并将相同的值分配给数据变量,那么它就可以工作。
答案 0 :(得分:14)
您正在向DataFrame构造函数提供dict的字符串表示,而不是字典本身。所以这就是你得到这个错误的原因。
因此,如果您想使用您的代码,您可以这样做:
df = DataFrame(eval(data))
但最好不要首先创建字符串,而是将其直接放入dict中。大致像:
data = []
for row in result_set:
data.append({'value': row["tag_expression"], 'key': row["tag_name"]})
但可能甚至不需要这样做,因为取决于您result_set
中的确切内容:
DataFrame(result_set)
read_sql_query
函数为您执行此操作(请参阅此docs)答案 1 :(得分:1)
刚刚遇到了同样的错误,但上面的答案对我没有帮助。
我的代码在我的电脑上运行良好,就像这样:
test_dict = {'x': '123', 'y': '456', 'z': '456'}
df=pd.DataFrame(test_dict.items(),columns=['col1','col2'])
但是,它在其他平台上不起作用。它给了我与原始问题中提到的相同的错误。我通过简单地在字典项周围添加 list()
来尝试下面的代码,之后它运行顺利:
df=pd.DataFrame(list(test_dict.items()),columns=['col1','col2'])
希望这个答案可以帮助像我一样遇到类似情况的人。