【Python专题】pandas.melt函数

大家经常把melt函数和透视表pivot_table函数放在一起对比。

同时,这里有一篇不错的对比的文章。Pandas melt和pivot_table比excel透视表好用多了

以及pandas行转列,列转行操作


一、作用

pandas.melt函数是为了将数据转换为对计算机友好的函数,当然,也是为了更加便于计算。

它主要是可以将在宽度上的表现形式转换为在长度上的表现形式。(Pandas.melt() unpivots a DataFrame from wide format to long format.)

melt()函数可用于将DataFrame转换成一种格式,在这种格式中,其中一列或多列是标识符变量,而所有其他列(被视为测量变量)都不会旋转到行轴,仅留下两个非标识符列,变量和值。

二、参数详解

pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None)
参数含义
frame: 要处理的数据集,格式需要为DataFrame
id_vars [元组,列表或ndarray,可选]:用作标识符变量的列。
value_vars [元组,列表或ndarray,可选]:要取消透视的列。如果未指定,则使用未设置为id_vars的所有列。
var_name [scalar]:用于“变量”列的名称。如果为None,则使用frame.columns.name或'variable'。
value_name [标量,默认为'value']:用于“ value”列的名称。
col_level [int或string,可选]:如果列是MultiIndex,则使用此级别进行融合。


三、示例

3.1使用的数据集

# Create a simple dataframe 
  
# importing pandas as pd 
import pandas as pd 
  
# creating a dataframe 
df = pd.DataFrame({'Name': {0: 'John', 1: 'Bob', 2: 'Shiela'}, 
                   'Course': {0: 'Masters', 1: 'Graduate', 2: 'Graduate'}, 
                   'Age': {0: 27, 1: 23, 2: 21}}) 
 NameCourseAge
0JohnMasters27
1BobGraduate23
2ShielaGraduate21

3.2转换

第一种

# Name is id_vars and Course is value_vars 
pd.melt(df, id_vars =['Name'], value_vars =['Course']) 
 Namevariablevalue
0JohnCourseMasters
1BobCourseGraduate
2ShielaCourseGraduate

第二种

# multiple unpivot columns 
pd.melt(df, id_vars =['Name'], value_vars =['Course', 'Age']) 
 Namevariablevalue
0JohnCourseMasters
1BobCourseGraduate
2ShielaCourseGraduate
3JohnAge27
4BobAge23
5ShielaAge21

第三种

# Names of ‘variable’ and ‘value’ columns can be customized 
pd.melt(df, id_vars =['Name'], value_vars =['Course'], 
              var_name ='ChangedVarname', value_name ='ChangedValname') 

 

 NameChangedVarnameChangedValname
0JohnCourseMasters
1BobCourseGraduate
2ShielaCourseGraduate

 

 

【参考文献】

1.Python | Pandas.melt()​​​​​​​

  • 14
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值