-
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
[source] -
?Unpivots? a DataFrame from wide format to long format, optionally leaving identifier variables set.
This function is useful to massage a DataFrame into a format where one or more columns are identifier variables (
id_vars
), while all other columns, considered measured variables (value_vars
), are ?unpivoted? to the row axis, leaving just two non-identifier columns, ?variable? and ?value?.Parameters: frame : DataFrame
id_vars : tuple, list, or ndarray, optional
Column(s) to use as identifier variables.
value_vars : tuple, list, or ndarray, optional
Column(s) to unpivot. If not specified, uses all columns that are not set as
id_vars
.var_name : scalar
Name to use for the ?variable? column. If None it uses
frame.columns.name
or ?variable?.value_name : scalar, default ?value?
Name to use for the ?value? column.
col_level : int or string, optional
If columns are a MultiIndex then use this level to melt.
See also
Examples
123456789>>>
import
pandas as pd
>>> 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
1
2
1
b
3
4
2
c
5
6
12345>>> pd.melt(df, id_vars
=
[
'A'
], value_vars
=
[
'B'
])
A variable value
0
a B
1
1
b B
3
2
c B
5
12345678>>> pd.melt(df, id_vars
=
[
'A'
], value_vars
=
[
'B'
,
'C'
])
A variable value
0
a B
1
1
b B
3
2
c B
5
3
a C
2
4
b C
4
5
c C
6
The names of ?variable? and ?value? columns can be customized:
123456>>> pd.melt(df, id_vars
=
[
'A'
], value_vars
=
[
'B'
],
... var_name
=
'myVarname'
, value_name
=
'myValname'
)
A myVarname myValname
0
a B
1
1
b B
3
2
c B
5
If you have multi-index columns:
1234567>>> df.columns
=
[
list
(
'ABC'
),
list
(
'DEF'
)]
>>> df
A B C
D E F
0
a
1
2
1
b
3
4
2
c
5
6
12345>>> pd.melt(df, col_level
=
0
, id_vars
=
[
'A'
], value_vars
=
[
'B'
])
A variable value
0
a B
1
1
b B
3
2
c B
5
12345>>> pd.melt(df, id_vars
=
[(
'A'
,
'D'
)], value_vars
=
[(
'B'
,
'E'
)])
(A, D) variable_0 variable_1 value
0
a B E
1
1
b B E
3
2
c B E
5
pandas.melt()

2025-01-10 15:47:30
Please login to continue.