Pandas.melt()函数用于unpivot将DataFrame从宽格式转换为长格式。
它的主要任务是将DataFrame压缩为一种格式,其中某些列是标识符变量,而其余列被认为是测量变量,且未在行轴上旋转。
语法
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=value, col_level=None)
参数
- frame - 它是指DataFrame。
- id_vars [tuple,list或ndarray,可选] - 是指用作标识符变量的列。
- value_vars [tuple,list或ndarray,可选] - 引用要取消unpivot的列。如果未指定,则使用未设置为id_vars的所有列。
- var_name [scalar] - 是指用于"变量(variable)"列的名称。如果为None,则使用frame.columns.name或variable。
- value_name [tuple,默认为value] - 是指用于" value"列的名称。
返回值
它返回未unpivot的DataFrame作为输出。
# importing pandas as pd import pandas as pd # 创建数据框 info = pd.DataFrame({Name: {0: Parker, 1: Learnfk, 2: John}, Language: {0: Python, 1: Java, 2: C++}, Age: {0: 22, 1: 30, 2: 26}})# 名称是 id_vars,课程是 value_vars pd.melt(info, id_vars =[Name], value_vars =[Language]) info
输出
Name Language Age 0 Parker Python 22 1 Learnfk Java 30 2 John C++ 26
例子2
import pandas as pd info = pd.DataFrame({A: {0: p, 1: q, 2: r}, B: {0: 40, 1: 55, 2: 25}, C: {0: 56, 1: 62, 2: 42}}) pd.melt(info, id_vars=[A], value_vars=[C]) pd.melt(info, id_vars=[A], value_vars=[B, C]) pd.melt(info, id_vars=[A], value_vars=[C], var_name=myVarname, value_name=myValname)
输出
A myVarname myValname 0 p C 56 1 q C 62 2 r C 42