Python pivot详解

部署运行你感兴趣的模型镜像

Python的pivot函数用来重塑数据,官方定义如下所示

 

pivot(index=None, columns=None, values=None)

 

index: 可选参数。设置新dataframe的行索引,如果未指明,就用当前已存在的行索引。

 

columns:必选参数。用来设置作为新dataframe的列索引。

 

values:可选参数。在原dataframe中选中某一列/几列的值,使其在新dataframe的列里显示。如果不指定,则默认将原dataframe中所有的列都显示,这里需要注意:为了将所有的值都显示出来,就会出现多层行索引的情况。

 

示例如下

df = pd.DataFrame({'A': ['one', 'one', 'two', 'three'] * 3, 'B': ['G', 'H', 'K'] * 4, 'C': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2, 'D': np.random.randn(12), 'E': np.random.randn(12)})

 

 

不设置行索引(不指定index),设置新的列索引为B,values取C,如下所示

 

 

指定values为C和D时,C和D就变成了层次化的列索引。如下图所示

 

其实可以这样理解:上图为 values只为C时的结果+ values只为D时的结果

 

values值取默认时,如下所示(values=A +C +D +E)

 

使用pivot函数,如果index或者columns中出现了多重值的情况,就会出错。

ValueError: Index contains duplicate entries, cannot reshape

 

举例如下:df.pivot(index='A', columns='B', values='D')

 

这是为什么呢?设置df 的index为A,在对df进行reshape时,A列的‘one’需要进行合并,如下图所示

 

 

设置columns为B,则B列的G,H,K列开始合并,如下图所示

设置values值为D,此时就会出现问题:one和G对应的数值到底是-0.3,还是0.07呢?Python无法进行分辨,就会报错。

 

 

通过上面的分析,就可以发现pivot函数就是set_index()和unstack()函数的集合。

 

df.set_index([‘B’,  ’D’])

 

再将D列unstack,就与pivot效果完全相同

 

通过以上的学习,你掌握pivot的用法了么?

更多内容,请关注我的微信公众号:EE漫谈

                                                         

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值