pandas.DataFrame.melt # 数据框。Melt ( id_vars = None , value_vars = None , var_name = None , value_name = 'value' , col_level = None , ignore_index = True ) [来源] # 将 DataFrame 从宽格式逆透视为长格式,可以选择保留标识符集。 此函数可用于将 DataFrame 调整为一种格式,其中一列或多列是标识符变量 ( id_vars ),而所有其他列(被视为测量变量 ( value_vars))均“反转”到行轴,只留下两个非标识符列,“变量”和“值”。 参数: id_vars标量、元组、列表或 ndarray,可选用作标识符变量的列。 value_vars标量、元组、列表或 ndarray,可选要取消透视的列。如果未指定,则使用未设置为id_vars的所有列。 var_name标量,默认无用于“变量”列的名称。如果没有,则使用 frame.columns.name“变量”。 value_name标量,默认“值”用于“值”列的名称不能是现有的列标签。 col_level标量,可选如果列是多重索引,则使用此级别来融化。 ignore_index bool, 默认 True如果为 True,则忽略原始索引。如果为 False,则保留原始索引。索引标签将根据需要重复。 返回: 数据框未旋转的数据框。 也可以看看 melt相同的方法。 pivot_table创建电子表格样式的数据透视表作为 DataFrame。 DataFrame.pivot返回按给定索引/列值组织的重塑的 DataFrame。 DataFrame.explode将 DataFrame 从类似列表的列分解为长格式。 笔记 请参阅用户指南以获取更多示例。 例子 >>> 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 >>> df.melt(id_vars=['A'], value_vars=['B']) A variable value 0 a B 1 1 b B 3 2 c B 5 >>> df.melt(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 “变量”和“值”列的名称可以自定义: >>> df.melt(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.melt(id_vars=['A'], value_vars=['B', 'C'], ignore_index=False) A variable value 0 a B 1 1 b B 3 2 c B 5 0 a C 2 1 b C 4 2 c C 6 如果您有多索引列: >>> 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 >>> df.melt(col_level=0, id_vars=['A'], value_vars=['B']) 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')]) (A, D) variable_0 variable_1 value 0 a B E 1 1 b B E 3 2 c B E 5