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:
DataFrame(result_set)
read_sql_query
para hacer esto por usted (vea los documentos sobre esto)