Desactive un DataFrame de formato ancho a largo, dejando los identificadores configurados opcionalmente.
Esta función es útil para dar masajes a un DataFrame en un formato donde una o más columnas son variables de identificación (id_vars), mientras que todas las demás columnas, consideraron variables medidas (value_vars), se “desvinculan” del eje de la fila, dejando solo dos columnas sin identificador, ‘variable’ y ‘valor’.
- Parámetros
-
- id_vars : tupla, lista o ndarray, opcional
-
Columna (s) para usar como variables de identificación.
- value_vars : tupla, lista o ndarray, opcional
-
Columna (s) para desvincular. Si no se especifica, utiliza todas las columnas que no están configuradas como id_vars.
- var_name : escalar
-
Nombre que se utilizará para la columna ‘variable’. Si ninguno usa frame.columns.name
o ‘variable’.
- value_name : escalar, ‘valor’ predeterminado
-
Nombre que se utilizará para la columna ‘valor’.
- col_level : int o str, opcional
-
Si las columnas son un MultiIndex, utilice este nivel para fundir.
- ignore_index : bool, por defecto Verdadero
-
Si es True, se ignora el índice original. Si es falso, se conserva el índice original. Las etiquetas de índice se repetirán según sea necesario.
Nuevo en la versión 1.1.0.
- Devoluciones
-
- Marco de datos
-
DataFrame sin pivote.
Ver también
melt
-
Método idéntico.
pivot_table
-
Cree una tabla dinámica al estilo de una hoja de cálculo como un DataFrame.
DataFrame.pivot
-
Devuelve DataFrame remodelado organizado por valores de índice / columna dados.
DataFrame.explode
-
Descomponga un DataFrame de columnas tipo lista a formato largo.
Ejemplos de
>>> df = pd.DataFrame('A':0:'a',1:'b',2:'c',...'B':0:1,1:3,2:5,...'C':0:2,1:4,2:6)>>> df
A B C
0 a 121 b 342 c 56
>>> df.melt(id_vars=['A'], value_vars=['B'])
A variable value
0 a B 11 b B 32 c B 5
>>> df.melt(id_vars=['A'], value_vars=['B','C'])
A variable value
0 a B 11 b B 32 c B 53 a C 24 b C 45 c C 6
Los nombres de las columnas ‘variable’ y ‘valor’ se pueden personalizar:
>>> df.melt(id_vars=['A'], value_vars=['B'],... var_name='myVarname', value_name='myValname')
A myVarname myValname
0 a B 11 b B 32 c B 5
Los valores originales del índice se pueden mantener en torno a:
>>> df.melt(id_vars=['A'], value_vars=['B','C'], ignore_index=False)
A variable value
0 a B 11 b B 32 c B 50 a C 21 b C 42 c C 6
Si tiene columnas de índices múltiples:
>>> df.columns =[list('ABC'),list('DEF')]>>> df
A B C
D E F
0 a 121 b 342 c 56
>>> df.melt(col_level=0, id_vars=['A'], value_vars=['B'])
A variable value
0 a B 11 b B 32 c B 5
>>> df.melt(id_vars=[('A','D')], value_vars=[('B','E')])(A, D) variable_0 variable_1 value
0 a B E 11 b B E 32 c B E 5