Tengo un DataFrame con cuatro columnas. Quiero convertir este DataFrame en un diccionario de Python. Quiero que los elementos de la primera columna sean keys
y los elementos de otras columnas en la misma fila values
.
Marco de datos:
ID A B C
0 p 1 3 2
1 q 4 3 2
2 r 4 0 9
La salida debería ser así:
Diccionario:
{'p': [1,3,2], 'q': [4,3,2], 'r': [4,0,9]}
python
pandas
dictionary
dataframe
Príncipe Bhatti
fuente
fuente
Dataframe.to_dict()
?Dataframe.to_dict()
haráA,B,C
las llaves en lugar dep,q,r
Respuestas:
El
to_dict()
método establece los nombres de las columnas como claves de diccionario, por lo que deberá reformar ligeramente su DataFrame. Establecer la columna 'ID' como índice y luego transponer el DataFrame es una forma de lograr esto.to_dict()
También acepta un argumento 'orientar' que necesitará para generar una lista de valores para cada columna. De lo contrario,{index: value}
se devolverá un diccionario del formulario para cada columna.Estos pasos se pueden realizar con la siguiente línea:
En caso de que se necesite un formato de diccionario diferente, aquí hay ejemplos de los posibles argumentos orientales. Considere el siguiente DataFrame simple:
Entonces las opciones son las siguientes.
dict - el valor predeterminado: los nombres de columna son claves, los valores son diccionarios de índice: pares de datos
lista : las claves son nombres de columna, los valores son listas de datos de columna
series - como 'lista', pero los valores son Series
dividido : divide columnas / datos / índice como claves con valores que son nombres de columnas, valores de datos por fila y etiquetas de índice respectivamente
registros : cada fila se convierte en un diccionario donde la clave es el nombre de la columna y el valor son los datos en la celda
índice - como 'registros', pero un diccionario de diccionarios con claves como etiquetas de índice (en lugar de una lista)
fuente
df.set_index('ID').T.to_dict('list')
Tratar de usar
Zip
Salida:
fuente
Sigue estos pasos:
Suponga que su marco de datos es el siguiente:
1. Use
set_index
para establecerID
columnas como el índice del marco de datos.2. Use el
orient=index
parámetro para tener el índice como claves de diccionario.Los resultados serán los siguientes:
3. Si necesita tener cada muestra como una lista, ejecute el siguiente código. Determinar el orden de las columnas.
fuente
Si no le importa que los valores del diccionario sean tuplas, puede usar itertuples:
fuente
debería un diccionario como:
ser requerido fuera de un marco de datos como:
la forma más sencilla sería hacer:
fragmento de trabajo a continuación:
fuente
Para mi uso (nombres de nodo con posiciones xy) encontré la respuesta de @ user4179775 a la más útil / intuitiva:
Apéndice
Más tarde volví a este tema, para otro trabajo, pero relacionado. Aquí hay un enfoque que refleja más de cerca la respuesta [excelente] aceptada.
Convierta el marco de datos de Pandas en una [lista], {dict}, {dict of {dict}}, ...
Por respuesta aceptada:
En mi caso, quería hacer lo mismo pero con columnas seleccionadas del marco de datos de Pandas, por lo que necesitaba cortar las columnas. Hay dos enfoques.
(ver: Convertir pandas a diccionario definiendo las columnas utilizadas para los valores clave )
o
que luego puede usarse para crear un diccionario de diccionarios
fuente
DataFrame.to_dict()
convierte DataFrame a diccionario.Ejemplo
Consulte esta documentación para más detalles.
fuente