Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
Convierta pandas.DataFrame a la lista de diccionarios en Python

Tengo un diccionario que se convierte de un marco de datos como se muestra a continuación:

 a = d.to_json(orient='index')

Diccionario :

 {"0":{"yr":2017,"PKID":"58306, 57011","Subject":"ABC","ID":"T001"},"1":{"yr":2018,"PKID":"1234,54321","Subject":"XYZ","ID":"T002"}}

Lo que necesito es que esté en una lista, esencialmente una lista de diccionario. Entonces solo agrego un [] porque ese es el formato que se usará en el resto del código.

 input_dict = [a]

dictado_de_entrada:

 [' {"0":{"yr":2017,"PKID":"58306, 57011","Subject":"ABC","ID":"T001"},"1":{"yr":2018,"PKID":"1234,54321","Subject":"XYZ","ID":"T002"}} ']

Necesito eliminar las comillas simples justo después de [ y justo antes de ]. Además, tenga los valores PKID en forma de lista.

¿Cómo se puede lograr esto?

Rendimiento esperado :

 [ {"yr":2017,"PKID":[58306, 57011],"Subject":"ABC","ID":"T001"},"1":{"yr":2018,"PKID":[1234,54321],"Subject":"XYZ","ID":"T002"} ]

NOTA: La columna PKID tiene múltiples valores enteros que deben ser un aumento de números enteros. una cadena no es aceptable. entonces necesitamos "PKID":[58306, 57011] y no "PKID":"[58306, 57011]"

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

pandas.DataFrame.to_json devuelve una cadena (cadena JSON), no un diccionario. Intenta to_dict en su lugar:

 >>> df col1 col2 0 1 3 1 2 4 >>> [df.to_dict(orient='index')] [{0: {'col1': 1, 'col2': 3}, 1: {'col1': 2, 'col2': 4}}] >>> df.to_dict(orient='records') [{'col1': 1, 'col2': 3}, {'col1': 2, 'col2': 4}]
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay una manera:

 from collections import OrderedDict d = {"0":{"yr":2017,"PKID":"58306, 57011","Subject":"ABC","ID":"T001"},"1":{"yr":2018,"PKID":"1234,54321","Subject":"XYZ","ID":"T002"}} list(OrderedDict(sorted(d.items())).values()) # [{'ID': 'T001', 'PKID': '58306, 57011', 'Subject': 'ABC', 'yr': 2017}, # {'ID': 'T002', 'PKID': '1234,54321', 'Subject': 'XYZ', 'yr': 2018}]

Tenga en cuenta que el diccionario ordenado está ordenado por claves de cadena de texto, tal como se proporciona. Es posible que desee convertirlos en números enteros primero antes de cualquier procesamiento a través de d = {int(k): v for k, v in d.items()} .

over 4 years ago · Santiago Trujillo Denunciar

0

Estás convirtiendo tu diccionario a json , que es una cadena. Luego envuelves tu cadena resultante en una lista. Entonces, naturalmente, el resultado es una cadena dentro de una lista.

Pruebe en su lugar: [d] donde d es su diccionario sin formato (no json convertido

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda