您的位置: 网站首页> Pandas教程> 当前文章
pandas多行转多列(长表变宽表)pivot和unstack
老董-我爱我家房产SEO2022-05-01158围观,126赞
pandas处理数据除了对数据进行加减乘除、关联、分组等之外,还会涉及对数据进行变形操作,比如多行转多列,多列转多行,本文介绍下pandas多行变多列(即长表变宽表)操作,分别用pivot和unstack来实现。
1、利用pivot函数实现多行变多列
DataFrame.pivot(index=None, columns=None, values=None) # 官方文档pivot的介绍
pivot函数比较好理解,index参数指的是你想作为行索引的列,columns指的是你想让他变成列索引的数据所在的列。实现多行变多列案例如下:
PS:如果你遇到Index contains duplicate entries, cannot reshape报错,别担心,请看这里解决Index contains duplicate entries, cannot reshape
# -*- coding:UTF-8 -*- df = pd.read_excel('11.xlsx') print(df) print('------------') df_res = df.pivot(index=['engine'],columns=['pingtai'],values=[2020,2021]) print(df_res)
engine pingtai 2020 2021 0 baidu pc 10 100 1 baidu wap 20 200 2 baidu app 30 300 3 sogou pc 30 300 4 sogou wap 40 400 5 sogou app 50 500 ------------ 2020 2021 pingtai app pc wap app pc wap engine baidu 30 10 20 300 100 200 sogou 50 30 40 500 300 400
2、利用unstack实现多行变多列
DataFrame.unstack(level=- 1, fill_value=None) #官方unstack介绍
对比pivot函数,可以发现unstack的参数针对的是索引层级,所以一般是多重索引时才用这个函数操作,如果是2重索引,那么level=-1代表内层索引。同样是上面的数据源,我们看下如何实现多行变多列。
# -*- coding:UTF-8 -*- df = pd.read_excel('11.xlsx') df.set_index(['engine','pingtai'],inplace=True) # 转为二维索引 print(df) print('------------') df_res = df.unstack(level=-1) print(df_res)
2020 2021 engine pingtai baidu pc 10 100 wap 20 200 app 30 300 sogou pc 30 300 wap 40 400 app 50 500 ------------ 2020 2021 pingtai app pc wap app pc wap engine baidu 30 10 20 300 100 200 sogou 50 30 40 500 300 400
关于pandas多行变多列(即长表变宽表)的操作就介绍到这里,如果需要更灵活的操作,大家可以自己研究,下一篇文章介绍pandas多列变多行(即宽表变长表)。
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
pandas多行转多列(长表变宽表)pivot和unstack文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200