pandas.melt

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)[source]

将DataFrame从宽格式“不透明”为长格式,可选地保留标识符变量设置。

此函数用于将DataFrame按为一个或多个列为标识符变量(id_vars)的格式,而所有其他列(视为测量变量(value_vars)) “unpivoted”到行轴,只剩下两个非标识符列“variable”和“value”。

参数:

:DataFrame

id_vars:tuple,list或ndarray,可选

用作标识符变量的列。

value_vars:tuple,list或ndarray,可选

要转向的列。如果未指定,则使用未设置为id_vars的所有列。

var_name:scalar

用于“变量”列的名称。如果为None,则使用frame.columns.name或'variable'。

value_name:scalar,default'value'

用于“值”列的名称。

col_level:int或string,可选

如果列是MultiIndex,则使用此级别来融化。

也可以看看

pivot_tableDataFrame.pivot

例子

>>> 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
>>> pd.melt(df, id_vars=['A'], value_vars=['B'])
   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
>>> 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

“variable”和“value”列的名称可以自定义:

>>> 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

如果您有多索引列:

>>> 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
>>> 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
>>> 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
Scroll To Top