惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园_首页
Vercel News
Vercel News
Last Week in AI
Last Week in AI
罗磊的独立博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
美团技术团队
U
Unit 42
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
J
Java Code Geeks
V
V2EX
量子位
腾讯CDC
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
L
LangChain Blog
C
Check Point Blog

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科 多款视频制作工具(免费)分享及素材推荐-互联网IT百科
pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科
2022-05-01 · via 老董笔记

  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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会