近日,由时代传媒集团主办的2024 “影响力·时代”峰会在上海举办,“时代金融金...
- 首页 > 新闻资讯 > 超经典的Pandas “行列” 转换教程!
点击上图,查看教学大纲
鉴于一直以来,总有人在群里面或者私下问,Python行转列、列转行的问题。基于此,我这里写一篇较全的文章,分享给大家。
为了给大家更加细致的讲述本文,我这里给大家造一些详细的数据。本文看完即学会,黄同学保证的。
列转行
首先我们看一下“列转行”的问题。这里我们利用pandas构造了这样一份数据。
df = pd.DataFrame({ "语文":[ 2, 4],
"数学":[ 6, 8]})
df.index = [ "张三", "李四"]
df
结果如下:
从表中可以看到:语文、数学都在列上面,我们如何将这些列转为行呢?这里有两种方式:
① stack方法
df1 = df.stack.reset_index
df1.columns = [ "姓名", "科目", "成绩"]
df1
结果如下:
② melt方法
由于这个函数参数多一些,我这里给大家先讲一下语法。
id_vars:列转行,不变的那一列;
value_vars:列转行,需要变动的那些列的列名;
var_name:列转为行后,新表的列名;
value_name:列转为行后,新表的值那一列的列明;
id_vars:列转行,不变的那一列;
value_vars:列转行,需要变动的那些列的列名;
var_name:列转为行后,新表的列名;
value_name:列转为行后,新表的值那一列的列明;
首先,我们再看看原来的数据长啥样。
接着,我们进行reset_index操作后,再看看数据长啥样。
我们就是要利用这个数据,完成最终的操作。
df2 = df2.melt(id_vars= 'index',value_vars=[ '语文', '数学'],var_name= "科目",value_name= "成绩")
df2.rename(columns={ "index": "姓名"},inplace= True)
df2
结果如下:
行专列
“行专列”这个需求,大家应该都见过。因为我们只要是用过数据透视表的同学,应该都知道这个需求。
我们在为大家构造一份数据,接着看。
df = pd.DataFrame({ "姓名":[ "张三", "李四", "张三", "李四"],
"科目":[ "语文", "语文", "数学", "数学"],
"成绩":[ 2, 4, 6, 8]})
df
结果如下:
在pandas中,我们使用pivot_table函数,来完成“行转列”的需求。在写代码之前,我先为大家讲解一下这个函数。
pd.pivot_table(data,index= None,columns= None,
values= None,aggfunc= 'mean',
margins= False,margins_name= 'All',
dropna= True,fill_value= None)
其中:
data:相当于Excel中的"选中数据源";
index:相当于上述"数据透视表字段"中的行;
columns:相当于上述"数据透视表字段"中的列;
values:相当于上述"数据透视表字段"中的值;
aggfunc:相当于上述"结果"中的计算类型;
margins:相当于上述"结果"中的总计;
margins_name:相当于修改"总计"名,为其它名称;
data:相当于Excel中的"选中数据源";
index:相当于上述"数据透视表字段"中的行;
columns:相当于上述"数据透视表字段"中的列;
values:相当于上述"数据透视表字段"中的值;
aggfunc:相当于上述"结果"中的计算类型;
margins:相当于上述"结果"中的总计;
margins_name:相当于修改"总计"名,为其它名称;
对应到Excel中,大致如下图:
知道基础后,那么如何完成本文的需求呢?
df1 = pd.pivot_table(df,index = '姓名',columns= '科目',values= '成绩')
df1
# ------------------------------
df1.columns.name = None
df1.index.name = None
df1
结果如下:
今天的内容大致就到这里,你学会了吗?如果还是有点模糊,可能还是函数参数太多导致的,大家下去仔细研究一下函数,即可!
配套视频演示
想查看更多微信群的小伙伴, 可以点击上面导航栏的微信群 或者下面按钮!
点我查看更多微信群
分享
近日,由时代传媒集团主办的2024 “影响力·时代”峰会在上海举办,“时代金融金...
律师提醒:小心这当中暗藏纠纷和陷阱每日商报讯 “双11”买的快递还没拆完,“双1...
快科技11月27日消息,新一代奥迪Q5L的国产版测试车谍照曝光,预计该车将于20...
为进一步推进商业信用体系建设,促进企业诚实守信经营,面...
本文转自:人民日报邱超奕《 人民日报 》( 2024年11月27日 第 17 版...
快科技11月26日消息,中国汽车流通协会副秘书长郎学红预测,今年将有约4000家...