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,则使用此级别来融化。
也可以看看
例子
>>> 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