Melt#
# general syntax
DataFrame.melt(self, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
Parameters:
id_varsoptionalIdentifier variable column(s)
value_varsoptionalColumn(s) to unpivot; if not specified, uses all columns that aren’t
id_vars
var_namerequiredColumn name for the new
variablecolumn; if not specified, usesvariable
value_namerequiredColumn name for the new
valuecolumn
col_leveloptionalOptional parameter to deal with multi-level index/multi-index
Let’s start with a simple DataFrame.
import numpy as np, pandas as pd # import statements
# create df
df = pd.DataFrame({'P': {0: 'p', 1: 'q', 2: 'r'},
'Q': {0: 1, 1: 3, 2: 5},
'R': {0: 2, 1: 4, 2: 6}})
df # show df
Example #1#
For our first .melt() example…
Pcolumn is the identifierQis the un-pivoted/melted (becomes a new columnRcolumn is dropped
df.melt(id_vars=['P'], value_vars=['Q']) # melt example
dfMelt = df.melt(id_vars=['P'], value_vars=['Q']) # assign to new df
dfMelt # show output
We can also use the var_name and value_name parameters to customize the column names as part of the .melt() function.
# melt syntax that specifies column names
df.melt(id_vars=['P'], value_vars=['Q'],
var_name='myVarname', value_name='myValname')
Example #2#
In our second .melt() example…
Pis still the identifierQ&Rare the unpivoted/melted columns
df.melt(id_vars=['P'], value_vars=['Q', 'R']) # another melt example
dfMelt2 = df.melt(id_vars=['P'], value_vars=['Q', 'R']) # assign to new df
dfMelt2 # show output