Python Pandas DataFrame stack(), unstack(), pivot(), melt()操作

四个函数功能的简单总结对比,stack/unstack一组,pivot/melt一组:

  • stack():将原来的列索引转成最内层的行索引;直观理解column to index
  • unstack():将最内层的行索引还原成列索引(默认最内层索引level=-1,可指定level=0为最外层索引);直观理解index to column
  • pivot():将某列的值设置为行索引、列索引以及对应的值;直观理解column values to index, to column, to value
  • melt():将特定列指定为标识符,特定列作为数值;直观理解columns to values

1. stack()函数

  • DataFrame.stack(level=- 1, dropna=True)
  • stack是堆叠的意思,简单理解,在书架上水平位置横排着一本一本的书,将其堆叠起来变成竖着的一摞书的过程即为stack操作。将指定的级别从列堆叠到索引。返回一个经过重塑的DataFrame或Series,该DataFrame或Series有一个多级索引,与当前的DataFrame相比有一个或多个新的最内层,新的最内层是通过旋转当前数据帧的列来创建的。


    stack

2.unstack()函数

  • DataFrame.unstack(level=- 1, fill_value=None)
  • unstack是取消堆叠的意思,简单理解就是把index转变为column,而stack的操作是把column变为index。


    unstack

3.pivot()函数

  • DataFrame.pivot(index=None, columns=None, values=None)
  • pivot是旋转的意思,直观理解是根据column和index对dataframe进行重新塑造,根据参数指定特定的index,column和value,更加灵活。


    pivot

4.melt()函数

  • DataFrame.melt(id_vars=None, value_vars=None, var_name=None, value_name='value', col_level=None, ignore_index=True)
  • 该函数有助于将DataFrame将从宽格式转换为长格式,其中一个或多个列是标识符变量(id_vars),而所有其他列,即测量变量(value_vars),是与行轴“不相关”的,只留下两个非标识符列“变量”和“值”。也可以指定标识列和数值列的名称。
melt

pivot()和melt()函数是较简单方便的,但是它俩是依据column的值作为索引的分类,和stack/unstack在column和index之间的转换有实质差别。一般在转换之后会进行reset_index()操作。

写的太糙了,看原始函数介绍比较好。

参见资料:
Pandas DataFrame stack 函数
Pandas DataFrame unstack 函数
Pandas DataFrame pivot 函数
Pandas DataFrame melt 函数
pandas中DataFrame的stack()、unstack()和pivot()方法的对比

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容