如何利用pandas的pivot()方法,实现长表改宽表的操作?
发布于 作者:苏南大叔 来源:程序如此灵动~

宽表改长表,使用的是pandas
的melt()
方法。那么,长表改宽表,使用的方法是pandas
的pivot
方法。本文就这种pivot()
方法进行简要的使用探讨。因为这个方法大概率会生成多重索引的dataframe
,理解起来有些费解并且不常见,所以,本文就是简单的探讨而已。

大家好,这里是苏南大叔的“程序如此灵动”博客,本文讨论长表变宽表的方法pivot()
。测试环境:win10
,python@3.11.0
,numpy@1.24.2
,pandas@1.5.3
。本文例子中的返回结果,不能用普通的方式去解读,因为索引都是复合多重的。仅供了解,目前是有些超纲。
pivot
,n.枢轴; 中心; 支点; 核心; 中心点; 最重要的人(或事物);v. (使)在枢轴上旋转(或转动);
函数说明
pivot
是Pandas
中的一个函数,可以将一个数据框中的列进行转换,使得某一列成为新的行索引,并用另一列的值来填充这个索引对应的单元格。有如下几个参数:
index
: 将要成为新的行索引的列名columns
: 将要成为新的列索引的列名values
: 将要填充新行索引和新列索引之间的单元格的列名
宽表改长表,主体的值会有冗余,但是还是能接受的。但是这个长表改宽表,颠覆了dataframe
中的labels
的概念,列名和行名都变成了个dataframe
,索引理解上是比较费解了。
标的数据
输出:
情况一,参数非数组
输出:
输出:

输出:
情况二,参数为数组
输出:
输出:

输出:
结束语
苏南大叔并不打算在多重索引的dataframe
上做过多文章阐述,毕竟普通的dataframe
还没有搞清楚。所以,这接下来的多重索引的dataframe
内容就待续吧。


