pandas.melt¶
-
pandas.
melt
(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)[source]¶ “Unpivots”DataFrame从宽格式到长格式,可选择设置标识符变量。
此函数可用于将DataFrame按压为一个或多个列为标识符变量(id_vars)的格式,而所有其他列(被视为测量变量(value_vars))均为“不显示”到行轴,只留下两个非标识符列,“变量”和“值”。
Parameters: frame : DataFrame
id_vars : tuple, list, or ndarray, optional
用作标识符变量的列。
value_vars : tuple, list, or ndarray, optional
要拆开的列。 如果未指定,则使用未设置为id_vars的所有列。
var_name : scalar
用于“变量”列的名称。 如果为None,则使用
frame.columns.name
或'variable'。value_name : scalar, default ‘value’
用于“值”列的名称。
col_level : int or string, optional
如果列是MultiIndex,则使用此级别进行融合。
See also
Examples
>>> 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
The names of ‘variable’ and ‘value’ columns can be customized:
>>> 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:
>>> 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