第 5 课

 

我们将简要介绍 stack 和 unstack 以及 T (Transpose)函数。

在用pandas进行数据重排时,经常用到stack和unstack两个函数。stack的意思是堆叠,堆积,unstack即“不要堆叠”,我对两个函数是这样理解和区分的。

  常见的数据的层次化结构有两种,一种是表格,一种是“花括号”,即下面这样的两种形式:

store1

store2

store3

street1

1

2

3

street2

4

5

6

  表格在行列方向上均有索引(类似于DataFrame),花括号结构只有“列方向”上的索引(类似于层次化的Series),结构更加偏向于堆叠(Series-stack,方便记忆)。stack函数会将数据从”表格结构“变成”花括号结构“,即将其行索引变成列索引,反之,unstack函数将数据从”花括号结构“变成”表格结构“,即要将其中一层的列索引变成行索引

In [1]:

# Import libraries
import pandas as pd
import sys
In [2]:
print('Python version ' + sys.version)
print('Pandas version: ' + pd.__version__)

Python version 3.5.1 |Anaconda custom (64-bit)| (default, Feb 16 2016, 09:49:46) [MSC v.1900 64 bit (AMD64)]
Pandas version: 0.20.1
In [3]:
# Our small data set
d = {'one':[1,1],'two':[2,2]}
i = ['a','b'] # Create dataframe
df = pd.DataFrame(data = d, index = i)
df
Out[3]:
  one two
a 1 2
b 1 2
In [4]:
df.index
Out[4]:
Index(['a', 'b'], dtype='object')
In [5]:
#把列放到索引
stack = df.stack() 

stack 
Out[5]:
a  one    1
two 2
b one 1
two 2
dtype: int64
In [6]:
#现在索引包含列名称
stack.index 
Out[6]:
MultiIndex(levels=[['a', 'b'], ['one', 'two']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]])
In [7]:
unstack = df.unstack()
unstack
Out[7]:
one  a    1
b 1
two a 2
b 2
dtype: int64
In [8]:
unstack.index
Out[8]:
MultiIndex(levels=[['one', 'two'], ['a', 'b']],
labels=[[0, 0, 1, 1], [0, 1, 0, 1]]) 

我们还可以使用T(转置)函数来使用索引翻转列名称。

In [9]:
transpose = df.T
transpose
Out[9]:
  a b
one 1 1
two 2 2
In [10]:
transpose.index
Out[10]:
Index(['one', 'two'], dtype='object')
 

This tutorial was rewrited by 六尺巷人_CDS

第五课: - Stack / Unstack / Transpose函数的更多相关文章

  1. NeHe OpenGL教程 第四十五课:顶点缓存

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  3. NeHe OpenGL教程 第二十五课:变形

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  4. NeHe OpenGL教程 第十五课:纹理图形字

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  5. 斯坦福IOS开发第五课(第一部分)

    转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/27706991 作者:小马 因为第五课的内容比較多.分两部分来写. 一 屏幕旋转基本 ...

  6. 【C语言探索之旅】 第二部分第五课:预处理

    内容简介 1.课程大纲 2.第二部分第五课: 预处理 3.第二部分第六课预告:   创建你自己的变量类型 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语 ...

  7. 【C语言探索之旅】 第一部分第五课:运算那点事

    内容简介 1.课程大纲 2.第一部分第五课:运算那点事 3.第一部分第六课预告:条件表达式 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏 ...

  8. Octave Tutorial(《Machine Learning》)之第五课《控制语句和方程及向量化》

    第五课 控制语句和方程 For,while,if statements and functions (1)For loop v=zeros(10,1) %initial vectors for i=1 ...

  9. Linux云自动化运维第五课

    Linux云自动化运维第五课 一.进程定义 进程就是cpu未完成的工作 二.ps命令 ps a ###关于当前环境的所有进程 x ###与当前环境无关的所有进程 f ###显示进程从属关系 e ### ...

随机推荐

  1. vue 上滑加载更多

    移动端网页的上滑加载更多,其实就是滑动+分页的实现. <template> <div> <p class="footer-text">--{{f ...

  2. SqlLite提高批量插入速度的方法及原因分析

    (1)-SQLite忽略大小写查询大部分数据库在进行字符串比较时,对大小写是不敏感的.但是SQLite却是大小写敏感的.如果想让SQLite忽略大小写,方法如下:方法一:使用大小写转换函数LOWER. ...

  3. Vue.js大总结

    最近回顾了一下Vue.js的基础知识,把认为重要的几个点简单的罗列了出来 vue渐进式的理解 vue可以开发很多插件,可以把很多插件组合到一起,渐进的增加vue的功能 update beforeUpd ...

  4. 类型转换、分支(day05)

    如果表达式里包含多个不同类型的数字就必须 首先把它们转换成同一个类型然后才能 计算 这个转换过程叫做隐式类型转换,完全由 计算机完成 隐式类型转换过程中一定把占地小的类型转换 成占地大的类型 如果不同 ...

  5. [poj3565] Ants (二分图带权匹配)

    传送门 Description 年轻自然主义者比尔在学校研究蚂蚁. 他的蚂蚁以苹果树上苹果为食. 每个蚁群都需要自己的苹果树来养活自己. 比尔有一张坐标为 n 个蚁群和 n 棵苹果树的地图. 他知道蚂 ...

  6. php 后端实现JWT认证方法

    JWT是什么 JWT是json web token缩写.它将用户信息加密到token里,服务器不保存任何用户信息.服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证.基于token的身 ...

  7. ecshop中{$lang.}标签的修改

    {$lang.}之类的文字都是在语言包里边定义的,所以要修改这些文字的话,我们只需要修改语言包里的文件.首先需要看一下你使用的语言是哪种,如果是中文的话,修改  languages/zh_cn/com ...

  8. C#学习笔记_03_运算符

    03_运算符 算数运算符 + - * / % ++ -- 赋值运算符 = += -= *= /= %= 关系运算符 > < >= <= == != 逻辑运算符 &:逻辑 ...

  9. 深入C++的运算符重载

    对于简单的运算符,可以参考之前的博文.之后会有一篇关于从等号运算符重载的角度研究深浅拷贝的博文.这里是讲:逗号,取成员运算符,输入输出运算符,下标运算符,括号,new和delete的重载. 逗号运算符 ...

  10. 学习EXTJS6(7)基本功能-最常用的表单

    开发过程中关于表单的处理无非: 1.表单和表单元素 2.实现表单验证 3.表单的提交和加载 -------------------------------------- 1.Ext.form.Basi ...