maxframe.dataframe.DataFrame.melt#
- DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=False, default_index_type=None)#
将 DataFrame 从宽格式转换为长格式,可选择保留标识符。
此函数用于将 DataFrame 调整为一种格式,其中一列或多列为标识变量(id_vars),而所有其他列(视为测量变量 value_vars)则被“展开”到行轴上,最终仅保留两个非标识列:'variable' 和 'value'。
- 参数:
value_vars (tuple, list, or ndarray, optional) -- 要展开的列。如果未指定,则使用所有未设置为 id_vars 的列。
var_name (scalar) -- 用于 'variable' 列的名称。如果为 None,则使用
frame.columns.name或 'variable'。value_name (scalar, default 'value') -- 用于 'value' 列的名称。
col_level (int or str, optional) -- 如果列是 MultiIndex,则使用此层级进行展开。
ignore_index (bool, default True) -- 如果为 True,则忽略原始索引;如果为 False,则保留原始索引。索引标签将根据需要重复。
- 返回:
展开后的 DataFrame。
- 返回类型:
示例
>>> import maxframe.dataframe as md >>> df = md.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'}, ... 'B': {0: 1, 1: 3, 2: 5}, ... 'C': {0: 2, 1: 4, 2: 6}}) >>> df.execute() A B C 0 a 1 2 1 b 3 4 2 c 5 6
>>> df.melt(id_vars=['A'], value_vars=['B']).execute() A variable value 0 a B 1 1 b B 3 2 c B 5
>>> df.melt(id_vars=['A'], value_vars=['B', 'C']).execute() 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' 列的名称可以自定义:
>>> df.melt(id_vars=['A'], value_vars=['B'], ... var_name='myVarname', value_name='myValname').execute() A myVarname myValname 0 a B 1 1 b B 3 2 c B 5
如果你有多级索引列:
>>> df = md.DataFrame({('A', 'D'): {0: 'a', 1: 'b', 2: 'c'}, ... ('B', 'E'): {0: 1, 1: 3, 2: 5}, ... ('C', 'F'): {0: 2, 1: 4, 2: 6}}) >>> df.execute() A B C D E F 0 a 1 2 1 b 3 4 2 c 5 6
>>> df.melt(col_level=0, id_vars=['A'], value_vars=['B']).execute() A variable value 0 a B 1 1 b B 3 2 c B 5
>>> df.melt(id_vars=[('A', 'D')], value_vars=[('B', 'E')]).execute() (A, D) variable_0 variable_1 value 0 a B E 1 1 b B E 3 2 c B E 5