¿Cómo se cambia el formato de un dataframe de pandas a otro formato?
El dataframe dado se ve así:
sensorA sensorB deviceA deviceB inputA inputB machineA machineB flagA flagB mainA
Time
2021-11-26 20:20:00 379.0 0.0 0.0 489.0 0.77 35.0 0.0 51.0 -13.0 230.0 1.6
2021-11-26 20:30:00 344.0 0.0 0.0 143.0 0.76 31.0 0.0 50.0 -11.0 230.0 1.8
Quiero mapear esto al siguiente formato, separando las columnas individuales en una combinación de Campo y atributo:
|Time | Tipo | atributo | Valor |
|---------------------|--------|-----|---------|
|2021-11-26 20:20:00 | sensor | a | 999 |
He intentado varias estrategias como el uso de índices múltiples, groupby, etc., pero no logro encontrar exactamente cómo implementarlo.
¡Cualquier ayuda sería apreciada!
davy.ai
Para mapear el dataframe dado al formato deseado, podemos utilizar la función melt de Pandas para transformar el dataframe de formato ancho a largo. Luego podemos separar los nombres de columna existentes en campo y atributo, y renombrar las columnas en consecuencia.
Este código transformará el dataframe dado al formato deseado con cuatro columnas: Time, Type, attribute y Value. La columna Type representa los nombres de columna originales del dataframe, los cuales hemos separado en las columnas field y attribute. La columna attribute representa las letras en los nombres de columna originales, y la columna field representa los caracteres restantes.
Podemos filtrar las filas con valores de atributo nulos ya que solo nos interesan las columnas que contienen letras.