第 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

最新文章

  1. screen 常用命令
  2. 学习Django
  3. 点击短信中的url打开某个应用
  4. HDU 3081 最大流+并查集
  5. mysql从只有一个备份文件(多个数据库的备份)中恢复数据到指定数据库
  6. JavaScript理解
  7. YII访问数据库
  8. hdu 1561 The more, The Better_树状dp
  9. 《JavaScript 闯关记》之原型及原型链
  10. centos下网络代理服务器的配置
  11. C#中string,char[],byte[]互相转换
  12. Apache Spark RDD(Resilient Distributed Datasets)论文
  13. Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017)ABCD
  14. javascript基础修炼(2)——What's this(上)
  15. 密码与安全新技术专题之AI与密码
  16. 【四】Ribbon负载均衡
  17. iOS 测试版系统安装说明(粗略翻译)
  18. Spring Boot(八):RabbitMQ详解
  19. kali 安装使用 sslocal
  20. c语言和c++有什么区别

热门文章

  1. Bem命名
  2. 阿里云直播鉴权java代码示例
  3. Linux删除大于/小于固定大小的文件等
  4. 洛谷P1579 哥德巴赫猜想(升级版)【水题+素数】
  5. [NOIP2018模拟赛]d
  6. 35.multi-index和multi-type搜索模式
  7. php 后端实现JWT认证方法
  8. node环境变量配置,npm环境变量配置
  9. 洛谷 P2010 回文日期
  10. ExtJs之Ajax模式的表单数据加载