What does "col_level" do in the melt function?

Question:

From the documentation:

pd.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)

What does col_level do?

Examples with different values of col_level would be great.

My current dataframe is created by the following:

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.columns = [list('ABC'), list('DEF'), list('GHI')]

Thanks.

Asked By: Nick123

||

Answers:

You can check melt:

col_level : int or string, optional

If columns are a MultiIndex then use this level to melt.

And examples:

df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
                   'B': {0: 1, 1: 3, 2: 5},
                   'C': {0: 2, 1: 4, 2: 6}})
#use Multiindex.from_arrays for set levels names
df.columns = pd.MultiIndex.from_arrays([list('ABC'), list('DEF'), list('GHI')],
                                        names=list('abc'))
print (df)
a  A  B  C
b  D  E  F
c  G  H  I
0  a  1  2
1  b  3  4
2  c  5  6

#melt by first level of MultiIndex
print (df.melt(col_level=0))
   a value
0  A     a
1  A     b
2  A     c
3  B     1
4  B     3
5  B     5
6  C     2
7  C     4
8  C     6

#melt by level a of MultiIndex
print (df.melt(col_level='a'))
   a value
0  A     a
1  A     b
2  A     c
3  B     1
4  B     3
5  B     5
6  C     2
7  C     4
8  C     6

#melt by level c of MultiIndex
print (df.melt(col_level='c'))
   c value
0  G     a
1  G     b
2  G     c
3  H     1
4  H     3
5  H     5
6  I     2
7  I     4
8  I     6
Answered By: jezrael
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.