Pandas教程-Pandas melt()

Pandas.melt() 函数用于将 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,可选]: 要取消旋转的列。如果未指定,则使用所有未设置为 id_vars 的列。
- var_name[标量]: 用于 'variable' 列的名称。如果为 None,则使用 frame.columns.name 或 'variable'。
- value_name[标量,默认为 'value']: 用于 'value' 列的名称。
- col_level[整数或字符串,可选]: 如果列是 MultiIndex,则将使用此级别进行融合。
返回
它返回取消旋转的 DataFrame 作为输出。
示例
# importing pandas as pd
import pandas as pd
# creating a dataframe
info = pd.DataFrame({'Name': {0: 'Parker', 1: 'Smith', 2: 'John'},
'Language': {0: 'Python', 1: 'Java', 2: 'C++'},
'Age': {0: 22, 1: 30, 2: 26}})
# Name is id_vars and Course is value_vars
pd.melt(info, id_vars =['Name'], value_vars =['Language'])
info
输出
Name Language Age
0 Parker Python 22
1 Smith 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