我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么创建一个pandas多层索引

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么创建一个pandas多层索引

这篇文章将为大家详细讲解有关怎么创建一个pandas多层索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

多层索引的创建

普通-多个index创建

  • 在创建数据的时候加入一个index列表,这个index列表里面是多个索引列表

Series多层索引的创建方法

import pandas as pds = pd.Series([1,2,3,4,5,6],index=[['张三','张三','李四','李四','王五','王五'],                  ['期中','期末','期中','期末','期中','期末']])# print(s)s

张三  期中    1
    期末    2
李四  期中    3
    期末    4
王五  期中    5
    期末    6
dtype: int64

利用 numpy中的随机数

import numpy as npdata = np.random.randint(0,100,size=(6,3))# np.random.randint(0,100,size=(6,3))是使用numpy中的随机模块random中,生成随机整数方法randint,# 里面的参数size是指定生成6行3列的数据,并且每个数字的范围在0到100之间data
array([[44, 66, 67],    [82, 52, 0],    [34, 78, 23],    [38, 4, 43],    [60, 62, 40],    [57, 9, 11]])

Dataframe多层索引创建

import pandas as pdimport numpy as npdata = np.random.randint(0,100,size=(6,3))df = pd.DataFrame(data,index=[['张三','张三','李四','李四','王五','王五'],               ['期中','期末','期中','期末','期中','期末']],           columns=['Java','Web','Python'])df

JavaWebPython
张三期中68490
期末336373
李四期中301368
期末141848
王五期中346626
期末891035

简化创建-from_product()

import pandas as pdimport numpy as npdata = np.random.randint(0,100,size=(6,3))names = ['张三','李四','王五']exam = ['期中','期末']index = pd.MultiIndex.from_product([names,exam])df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])# print(df)df

JavaWebPython
张三期中517847
期末395336
李四期中336083
期末90553
王五期中374566
期末68271

from_product()在这个里面的列表中位置不同, 产生的索引页会不同

index = pd.MultiIndex.from_product([exam, names])df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])# print(df)df

JavaWebPython
期中张三517847
李四395336
王五336083
期末张三90553
李四374566
王五68271

from_product([exam,names])会将列表中第一个元素作为最外层索引,依次类推

多层索引的取值

获取到我们想要的数据

获取多层索引Series中的数据

创建数据

import pandas as pds = pd.Series([1,2,3,4,5,6],index=[['张三','张三','李四','李四','王五','王五'],                  ['期中','期末','期中','期末','期中','期末']])print(s)

张三  期中    1
    期末    2
李四  期中    3
    期末    4
王五  期中    5
    期末    6
dtype: int64

可以直接使用[]的方式取最外面的一个层级 s[‘张三']

s['李四']# 注意:[]取值方式,不可直接使用最外层以外的其他层级,例如:s['期末']

期中    3
期末    4
dtype: int64

使用['外索引', '内索引'], 获取某个数据

注意:[‘张三',‘期末']他们的顺序不能变。剥洋葱原则,从外到内一层一层的剥。

s['李四', '期中'] # 李四期中分值# 注意:['张三','期末']他们的顺序不能变。剥洋葱原则,从外到内一层一层的剥。

3

使用[]的切片,获取数据s[:,‘期中']

s[:,'期中'] # 第一个值为全部的外索引

张三    1
李四    3
王五    5
dtype: int64

使用 loc

  • loc 使用的是标签suoyin

  • iloc使用的是位置索引

# loc 使用方式与 [] 的方式基本一样s.loc['张三']s.loc['张三','期中']s.loc[:,'期中']# iloc 的取值并不会受多层索引影响,只会根据数据的位置索引进行取值, 不推荐

张三    1
李四    3
王五    5
dtype: int64

多层索引DataFrame的取值

在对多层索引DataFrame的取值是,推荐使用 loc() 函数

import pandas as pdimport numpy as np#size参数是指定生成6行3列的数组data = np.random.randint(0,100,size=(6,3))names = ['张三','李四','王五']exam = ['期中','期末']index = pd.MultiIndex.from_product([names,exam])df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])df

JavaWebPython
张三期中34052
期末743885
李四期中72816
期末9250
王五期中13248
期末49461

三种方式都可以获取张三期中各科成绩

# df.loc['张三','期中']# df.loc['张三'].loc['期中']# df.loc[('张三','期中')]

注意:DataFrame中对行索引的时候和Series有一个同样的注意点,就是无法直接对二级索引直接进行索引,必须让二级索引变成一级索引后才能对其进行索引

多层索引的排序

  • 使用sort_index() 排序

  • level参数可以指定是否按照指定的层级进行排列

  • 第一层索引值为0, 第二层索引的值为1

创建数据

import pandas as pddata = np.random.randint(0,100,size=(9,3))key1 = ['b','c','a']key2 = [2,1,3]index = pd.MultiIndex.from_product([key1,key2])df = pd.DataFrame(data,index=index,columns=['Java','Web','Python'])df


JavaWebPython
b2568281
1841655
3352586
c276176
1362894
3797097
a2251730
1383878
3417590

排序

  • DataFrame按行索引排序的方法是sort_index()

  • 如果直接使用的话,不传参数, 会把每一层索引根据值进行升序排序

df.sort_index()

JavaWebPython
a1186074
2668727
3961864
b1725852
2223122
3311283
c165496
294718
331634
# 当level=0时,ascending=False, 会根据第一层索引值进行降序排序df.sort_index(level=0,ascending=False)

JavaWebPython
c3797097
276176
1362894
b3352586
2568281
1841655
a3417590
2251730
1383878
# 当level=1时,会根据第二层索引值进行降序排序df.sort_index(level=1,ascending=False)# 数据会根据第二层索引值进行相应的降序排列,# 如果索引值相同时会根据其他层索引值排列

JavaWebPython
c3797097
b3352586
a3417590
c276176
b2568281
a2251730
c1362894
b1841655
a1383878

通过level设置排序的索引层级,其他层索引也会根据其排序规则进行排序

关于怎么创建一个pandas多层索引就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么创建一个pandas多层索引

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么创建一个pandas多层索引

这篇文章将为大家详细讲解有关怎么创建一个pandas多层索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。多层索引的创建普通-多个index创建在创建数据的时候加入一个index列表,这个i
2023-06-07

mysql怎么创建唯一索引

在MySQL中,可以使用CREATE INDEX语句来创建唯一索引。唯一索引是一种索引,其中每个索引值只能出现一次,用于保证表中的每条记录在索引列上的值都是唯一的。以下是创建唯一索引的语法示例:CREATE UNIQUE INDEX i
mysql怎么创建唯一索引
2024-04-09

elasticsearch怎么创建索引

要创建一个索引,可以使用Elasticsearch提供的RESTful API或者Elasticsearch客户端库。使用RESTful API创建索引的步骤如下:1. 使用PUT请求来创建索引。例如,使用以下命令创建名为"my_index
2023-10-08

Mariadb索引怎么创建

这篇文章主要讲解了“Mariadb索引怎么创建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Mariadb索引怎么创建”吧!索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成
2023-06-27

oracle索引怎么创建

oracle中创建索引的步骤有三个:1. 确定要索引的列;2. 确定索引类型;3. 创建索引。Oracle 索引创建方法创建索引的步骤:确定要索引的列。确定索引类型。创建索引。确定要索引的列:选择索引列时,应考虑以下因素:经常用于查
oracle索引怎么创建
2024-05-21

PostgreSQL中怎么创建索引

在 PostgreSQL 中,可以使用 CREATE INDEX 语句来创建索引。语法如下:CREATE INDEX index_nameON table_name (column_name);其中,index_name 是要创建的索引
PostgreSQL中怎么创建索引
2024-04-09

MySQL中怎么创建索引

在MySQL中,可以使用CREATE INDEX语句来创建索引。语法如下:CREATE INDEX index_nameON table_name (column1, column2, ...);其中,index_name是索引的名称,
MySQL中怎么创建索引
2024-04-09

kibana怎么创建索引模板

要在Kibana中创建索引模板,您可以按照以下步骤操作:1. 打开Kibana控制台并登录到您的Kibana实例。2. 在左侧导航栏中,选择"Stack Management"(版本7.x之前的Kibana中称为"Management")。
2023-09-18

mongodb怎么创建索引失败

当创建索引失败时,有以下几个可能的原因:1. 重复的索引名称:如果尝试创建重复名称的索引,MongoDB会报错。确保使用唯一的索引名称。2. 索引字段值过大:MongoDB的索引字段值的限制是16MB。如果尝试创建一个超过这个限制的索引,创
2023-08-31

SQL索引怎么创建使用

这篇文章主要讲解了“SQL索引怎么创建使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL索引怎么创建使用”吧!索引的作用索引的作用就是加快查询速度,如果把使用了索引的查询看做是法拉利跑
2023-06-02

mysql怎么创建联合索引

在MySQL中,可以使用CREATE INDEX语句来创建联合索引。创建联合索引的语法如下:CREATE INDEX index_name ON table_name (column1, column2, ...);其中,index_n
mysql怎么创建联合索引
2024-02-29

oracle怎么创建本地索引

在Oracle中,可以使用CREATE INDEX语句来创建本地索引。以下是创建本地索引的基本语法:CREATE INDEX index_nameON table_name (column_name);其中,index_name是要创建的索
2023-09-29

oracle怎么创建组合索引

要在Oracle中创建组合索引,您需要使用CREATE INDEX语句,并指定要创建的索引的名称、表名称以及要包含在索引中的列。以下是在Oracle中创建组合索引的语法:CREATE INDEX index_nameON table_
2023-10-27

mysql怎么创建聚集索引

在MySQL中,你可以使用`CREATE INDEX`语句来创建聚集索引。以下是创建聚集索引的一般语法:```sqlCREATE [UNIQUE] CLUSTERED INDEX index_nameON table_name (colum
2023-08-29

oracle位图索引怎么创建

要创建Oracle位图索引,可以使用以下语法:CREATE BITMAP INDEX index_nameON table_name (column1, column2, ...);其中,index_name是要创建的索引的名称,ta
2023-10-25

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录