和pivot_index 相反,前者是长表转宽表,melt是宽表转长表
pandas 笔记:pivot_table 数据透视表_UQI-LIUWJ的博客-CSDN博客
1 基本使用方法
pandas.melt(
frame,
id_vars=None,
value_vars=None,
var_name=None,
value_name='value',
col_level=None)
2 主要参数
frame | 要处理的数据集 |
id_vars | 不需要被转换的列名 |
value_vars | 需要转换的列,如果剩下的列全部都要转换,就不用写 |
var_name value_name | 自定义设置对应的列名 |
col_level | 如果列是MultiIndex,则使用此级别 |
3 举例
3.0 数据
data=pd.DataFrame(np.random.rand(3,3),
index=[0,1,2],
columns=['a','b','c'])
data
3.1 id_vars
保留的内容
pd.melt(data,id_vars='a')
'''
a variable value
0 0.510682 b 0.577556
1 0.592309 b 0.909568
2 0.583235 b 0.292410
3 0.510682 c 0.124021
4 0.592309 c 0.224520
5 0.583235 c 0.913809
'''
#保留A,对B和C列进行转换,将C列数据保留,源C列字段作为新的数据值
3.2 value_var
pd.melt(data,id_vars='a',value_vars='c')
'''
a variable value
0 0.510682 c 0.124021
1 0.592309 c 0.224520
2 0.583235 c 0.913809
'''
#保留A,对C列进行转换,将C列数据保留,源C列字段作为新的数据值
3.3 var_name value_name
新增的variable和value列的名字
pd.melt(data,
id_vars='a',
value_vars='c',
var_name='new_a',
value_name='new_c')
'''
a new_a new_c
0 0.510682 c 0.124021
1 0.592309 c 0.224520
2 0.583235 c 0.913809
'''