1.创建多层行索引

(1) 隐式构造   

     最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组

-- Series也可以创建多层索引

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas import Series, DataFrame'''使用Series创建多层索引(隐式)'''
s = Series([80, 90, 82, 92], index=[['a', 'a', 'b', 'b'], ['期中', '期末', '期中', '期末']])
print(s)
"""
a  期中    80期末    90
b  期中    82期末    92
dtype: int64
"""'''使用DataFrame创建多层索引(隐式)'''
df = DataFrame(np.random.randint(0, 150, size=(6, 3)),columns=['语文', '数学', 'python'],index=[['zsan', 'zsan', 'lisi', 'lisi', 'wwu', 'wwu'],['mid', 'end', 'mid', 'end','mid', 'end']])
print(df)
"""语文   数学  python
zsan mid   77   60      29end  113  121      38
lisi mid   46   14      33end  115  127      41
wwu  mid   35   96      77end  139   41     134
"""

(2) 显示构造

        ---  使用数组 pd.MultiIndex.from_arrays

        --- 使用tuple pd.MultiIndex.from_tuples

        --- 使用product pd.MultiIndex.from_product

"""显示构造."""'''1.使用数组 pd.MultiIndex.from_arrays'''
df1 = DataFrame(np.random.randint(0, 150, size=(6, 3)),columns=['Java', 'HTML5', 'Python'],index=pd.MultiIndex.from_arrays([['张三', '张三', '李四', '李四', '王五', '王五'],['期中', '期末', '期中', '期末', '期中', '期末']]))
print(df1)
'''2.使用tuple pd.MultiIndex.from_tuples'''
df2 = DataFrame(np.random.randint(0, 150, size=(6, 3)),columns=['Java', 'HTML5', 'Python'],index=pd.MultiIndex.from_tuples([('张三', '期中'), ('张三', '期末'), ('李四', '期中'), ('李四', '期末'), ('王五', '期中'),('王五', '期末')]))
print(df2)
'''3.使用product pd.MultiIndex.from_product'''
'''最简单,推荐使用'''
df3 = DataFrame(np.random.randint(0, 150, size=(6, 3)),columns=['Java', 'HTML5', 'Python'],index=pd.MultiIndex.from_product([['张三', '李四', '王五'], ['期中', '期末']]))
print(df3)
"""  # 三种不同的显示创建方式,同样的结果Java  HTML5  Python
张三 期中   133     79     133期末    31     50     104
李四 期中    63     96      45期末   145     14     103
王五 期中   145     39      53期末    41     98      46
"""

2.创建多层列索引

除了行索引index,列索引columns也能用同样的方法创建多层索引

"""多层列索引"""
df4 = DataFrame(np.random.randint(0, 150, size=(3, 6)),columns=pd.MultiIndex.from_product([['Java', 'HTML', 'Python'], ['期中', '期末']]),index=['张三', '李四', '小张'])
print(df4)
"""Java      HTML     Python     期中   期末   期中  期末     期中   期末
张三   37  132   77  18    127   76
李四    8   47   65  59     68   63
小张   16   65  138  28     56  135
"""

其他的方法都是类似的

Pandas的学习(6.DataFrame和Series创建多层行索引以及多层列索引)相关推荐

  1. Pandas的学习(3.DataFrame的创建方法和三种索引方法(iloc、loc、values)以及切片)

    DataFrame DataFrame是一个[表格型]的数据结构,可以看做是[由Series组成的字典](共用同一个索引).DataFrame由按一定顺序排列的多列数据组成,设计初衷是将Series的 ...

  2. pandas读取csv数据、参数指定作为行索引的数据列索引列表形成复合(多层)行索引、使用set_index函数把数据列转化为行索引(keys参数指定需要被转化的数据列)

    pandas使用read_csv函数读取csv数据.index_col参数指定作为行索引的数据列索引列表形成复合(多层)行索引.header参数指定作为

  3. Pandas的学习(4.DataFrame之间的运算以及DataFrame和Series之间的运算)

    DataFrame的运算    1.DataFrame之间的运算 同Series一样: ---   在运算中自动对齐不同索引的数据 ---  如果索引不对应,则补NaN 无论是行不对应还是列不对应,都 ...

  4. dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...

    一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...

  5. 【深度学习】array, list, tensor,Dataframe,Series之间互相转换总结

    一.前言 对于在Deep Learning的学习中总会有几个数据类型的转换,这次想把这些常用的转换做一个总结,方便以后看. 这些主要包括:Dataframe.Series(pandas), array ...

  6. 【Pandas库】(3) DataFrame的创建方法及基本操作

    各位同学好,今天给大家介绍一下Pandas库中DataFrame类型数据的创建方法和基本操作. 文章内容如下: (1)使用字典类创建. 字典类有:①数组.列表.元组构成的字典:②Series构造的字典 ...

  7. 【数据分析】认识Pandas:DataFrame和Series结构、属性

    数据分析工具--Pandas 认识Pandas Dataframe 结构 DataFrame 构造方法 dtype参数 Series 结构 Series 构造方法 DataFrame和Series属性 ...

  8. 【串讲总结】array, list, tensor,Dataframe,Series之间互相转换总结

    一.前言 对于在Deep Learning的学习中总会有几个数据类型的转换,这次想把这些常用的转换做一个总结,方便以后看. 这些主要包括:Dataframe.Series(pandas), array ...

  9. pandas 模块学习

    2019独角兽企业重金招聘Python工程师标准>>> pandas模块 方法有两个 1.在windows下安装pandas,只安装pandas一个包显然是不够的,它并没有把用到的相 ...

最新文章

  1. SW6206超级华为快充5V5A,全协议OPPO闪充、自带电量计量、LED 灯/数码管显示
  2. 关于在web项目中实现本地打印
  3. python下载安装教程mac-教程|如何在mac上为Python安装XGBoost!
  4. linux内核网络协议栈--linux bridge(十九)
  5. java oj主机名排序_oj教程--排序算法(Java)
  6. 5、修改视图(ALTER VIEW)
  7. 牛客题霸 NC20 数字字符串转化成IP地址
  8. Linux设备驱动程序学习(4) -高级字符驱动程序操作[(1)ioctl and llseek]
  9. REVERSE-PRACTICE-BUUCTF-15
  10. Android性能优化 笔记
  11. 苹果手机查看python代码的免费软件-Python实现抢购IPhone手机
  12. Python实现机器学习
  13. 选项不属于HTML语言特点,Web前端开发初级模拟测试卷一(2)
  14. 面向视频领域的边缘计算白皮书
  15. 微信扫一扫门禁开门小程序开发制作
  16. 颠覆平庸 在技术上持续精进
  17. 计算机视觉 | 八斗人工智能 (上)
  18. 关于ES6中let 和 const 命令的用法以及注意事项:
  19. static在c语言中是什么意思,在C语言中static有什么含义
  20. Windows如何打开命令模式

热门文章

  1. oracle用户锁定及修改密码
  2. paramterType和resultType的区别
  3. sleep方法和wait方法的区别
  4. 《移动应用开发》实验报告——Vue
  5. 汇编语言——100个数中的最大数
  6. nacos+openfeign服务提供和服务消费远程调用代码简单实例2
  7. flex采用blazeds实现服务器向客户端推数据
  8. C语言【将一个文本文件中的全部信息显示到屏幕上】
  9. Java-Map从入门到性能分析2【HashMap的底层原理、构造方法优化、常用方法】
  10. 限制EditText 输入的字节数