¡El constructor de DataFrame no se llama correctamente! error

Soy nuevo en Python y estoy enfrentando un problema al crear el Dataframe en el formato de clave y valor, es decir

data = [{'key':'\[GlobalProgramSizeInThousands\]','value':'1000'},] 

Aquí está mi código

 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); 

Pero cuando paso los datos en DataFrame, me muestra pandas.core.common.PandasError: ¡No se ha llamado correctamente al constructor DataFrame! .

mientras que si imprimo los datos y asigno el mismo valor a la variable de datos, entonces funciona.

Usted está proporcionando una representación de cadena de un dict al constructor DataFrame, y no un dict. Así que esta es la razón por la que obtienes ese error.

Entonces, si quieres usar tu código, podrías hacer:

 df = DataFrame(eval(data)) 

Pero mejor sería no crear la cadena en primer lugar, sino ponerla directamente en un dict. Algo más o menos como

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

Pero probablemente incluso esto no sea necesario, ya que dependiendo de lo que esté exactamente en su result_set , puede que probablemente:

  • proporcione esto directamente a un DataFrame: DataFrame(result_set)
  • o use la función pandas read_sql_query para hacer esto por usted (vea los documentos sobre esto)