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

时间:2014-09-01 10:47:55

标签: python pandas

我是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构造函数!

如果我打印数据并将相同的值分配给数据变量,那么它就可以工作。

2 个答案:

答案 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提供此内容:DataFrame(result_set)
  • 或使用pandas 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'])

希望这个答案可以帮助像我一样遇到类似情况的人。