Pandas 多层索引中的索引和切片操作你学会了吗

图片

1. Series的索引操作

  • 对于Series来说,直接中括号[]与使用 .loc() 完全一样

  • 显式索引

# 导包import numpy as npimport pandas as pd
data = np.random.randint(0,100,size=6)
index = [    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]]
s = pd.Series(data=data,index=index)s
1班  张三     68
    李四     12
    王五     91
2班  鲁班     85
    张三丰    52
    张无忌    79
dtype: int32
# 显式索引
s["1班"]
张三 68
李四 12
王五 91
dtype: int32
s.loc["1班"]
张三 68
李四 12
王五 91
dtype: int32
s[["1班"]]
1班 张三 68
    李四 12
    王五 91
dtype: int32
s[["1班","2班"]]
1班 张三 68
    李四 12
    王五 91
2班 鲁班 85
    张三丰 52
    张无忌 79
dtype: int32

s["1班"]["张三"]
68

s["1班"]["张三"]
68
​​​​​
s["1班","张三"]
68

s.loc["1班"]["张三"]
68
s.loc["1班","张三"]
68
  • 隐式索引

# 隐式索引 
​​​​​​​s[0]
68
s.iloc[0]
68
s.iloc[[0,1]]
1班 张三 68
    李四 12
dtype: int32

2. Series的切片操作

  • 显式切片

# 显式切片 s["1班":"2班"]
1班 张三 68
    李四 12
    王五 91
2班 鲁班 85
    张三丰 52
    张无忌 79
dtype: int32
s.loc["1班":"2班"]
1班 张三 68
    李四 12
    王五 91
2班 鲁班 85
    张三丰 52
    张无忌 79
dtype: int32
s.loc["1班"]["张三":"李四"]
张三 68
李四 12
dtype: int32
  • 隐式切片​​​​​​​

# 建议使用隐式索引 s[1:5]
1班 李四 12
    王五 91
2班 鲁班 85
    张三丰 52
dtype: int32
s.iloc[1:5]
1班 李四 12
    王五 91
2班 鲁班 85
    张三丰 52
dtype: int32

3. DataFrame的索引操作

  • 获取元素

# 导包import numpy as npimport pandas as pd
data = np.random.randint(0,100,size=(6,6))
# 行索引index = pd.MultiIndex.from_arrays([    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]])
# 列索引columns = pd.MultiIndex.from_arrays([    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]])
df = pd.DataFrame(data=data,index=index,columns=columns)df
期中期末
语文数学英语语文数学英语
1班张三274241618732
李四195123251234
王五2884992980
2班鲁班5676418313
张三丰467297818870
张无忌3473352423
# 获取元素df["期中"]["数学"]["1班"]["张三"]
42
​​​​​​​df.iloc[0,1]
42
df.loc[("1班","张三"),("期中","数学")]
42
  • 列索引​​​​​​​

# 列索引df["期中"]
语文数学英语
1班张三274241
李四195123
王五28849
2班鲁班56764
张三丰467297
张无忌347335
df["期中"][["数学"]]
数学
1班张三42
李四51
王五8
2班鲁班7
张三丰72
张无忌73
df["期中"]["数学"]
1班  张三     42
    李四     51
    王五      8
2班  鲁班      7
    张三丰    72
    张无忌    73
Name: 数学, dtype: int32
df["期中","数学"]
1班  张三     42
    李四     51
    王五      8
2班  鲁班      7
    张三丰    72
    张无忌    73
Name: (期中, 数学), dtype: int32
df.期中.数学
1班  张三     42
    李四     51
    王五      8
2班  鲁班      7
    张三丰    72
    张无忌    73
Name: 数学, dtype: int32
df.iloc[:,1]
1班  张三     42
    李四     51
    王五      8
2班  鲁班      7
    张三丰    72
    张无忌    73
Name: (期中, 数学), dtype: int32
df.iloc[:,[0,1,2]]
期中
语文数学英语
1班张三274241
李四195123
王五28849
2班鲁班56764
张三丰467297
张无忌347335
df.loc[:,"期中"]
语文数学英语
1班张三274241
李四195123
王五28849
2班鲁班56764
张三丰467297
张无忌347335
df.loc[:,("期中","数学")]
1班  张三     42
    李四     51
    王五      8
2班  鲁班      7
    张三丰    72
    张无忌    73
Name: (期中, 数学), dtype: int32
  • 行索引​​​​​​​

# 行索引df.loc["1班"]
期中期末
语文数学英语语文数学英语
张三274241618732
李四195123251234
王五2884992980
df.loc["1班"].loc["张三"]
期中  语文    27
    数学    42
    英语    41
期末  语文    61
    数学    87
    英语    32
Name: 张三, dtype: int32
df.loc["1班","张三"]
期中  语文    27
    数学    42
    英语    41
期末  语文    61
    数学    87
    英语    32
Name: (1班, 张三), dtype: int32
df.loc[("1班","张三")]
期中  语文    27
    数学    42
    英语    41
期末  语文    61
    数学    87
    英语    32
Name: (1班, 张三), dtype: int32
  • 隐式索引​​​​​​​

# 隐式索引df.iloc[0]
期中  语文    27
    数学    42
    英语    41
期末  语文    61
    数学    87
    英语    32
Name: (1班, 张三), dtype: int32
df.iloc[[0]]
期中期末
语文数学英语语文数学英语
1班张三274241618732
df.iloc[[0,1,4,2]]
期中期末
语文数学英语语文数学英语
1班张三274241618732
李四195123251234
2班张三丰467297818870
1班王五2884992980

4. DataFrame的切片操作

  • 行切片​​​​​​​

# 导包import numpy as npimport pandas as pd
data = np.random.randint(0,100,size=(6,6))
# 行索引index = pd.MultiIndex.from_arrays([    ["1班","1班","1班","2班","2班","2班"],    ["张三","李四","王五","鲁班","张三丰","张无忌"]])
# 列索引columns = pd.MultiIndex.from_arrays([    ["期中","期中","期中","期末","期末","期末"],    ["语文","数学","英语","语文","数学","英语"]])
df = pd.DataFrame(data=data,index=index,columns=columns)df
期中期末
语文数学英语语文数学英语
1班张三732694915933
李四1220861076
王五28115505936
2班鲁班963532207978
张三丰963794577974
张无忌69929652867
# 行切片df.iloc[1:5]
期中期末
语文数学英语语文数学英语
1班李四1220861076
王五28115505936
2班鲁班963532207978
张三丰963794577974
df.loc["1班":"2班"]
期中期末
语文数学英语语文数学英语
1班张三732694915933
李四1220861076
王五28115505936
2班鲁班963532207978
张三丰963794577974
张无忌69929652867
df.loc[[("1班","张三")]]
期中期末
语文数学英语语文数学英语
1班张三732694915933
  • 列切片​​​​​​​

# 列切片df.iloc[:,1:5]
期中期末
数学英语语文数学
1班张三26949159
李四2208610
王五81155059
2班鲁班35322079
张三丰37945779
张无忌9296528
df.loc["1班","期中":"期末"]
期中期末
语文数学英语语文数学英语
张三732694915933
李四1220861076
王五28115505936
# 建议切片使用隐式索引(使用数字下标)df.iloc[1:5,1:5]
期中期末
数学英语语文数学
1班李四2208610
王五81155059
2班鲁班35322079
张三丰37945779

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/647270.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL事务篇1:事物的四大特性(ACID)、三类数据读取问题与隔离级别

一、什么是事务? MySQL的事务(Transaction)是一组由数据库管理系统(DBMS)执行的一个或多个SQL语句的集合,这些SQL语句作为一个单独的工作单元执行。事务的主要目的是确保数据库的一致性和完整性&#xff0c…

Qt 界面上字体自适应控件大小 - 随控件缩放

Qt 界面上字体自适应控件大小 - 随控件缩放 引言一、设计思路二、进阶版大致思路三、参考链接 引言 Qt控件自适应字体大小可以用adjustSize()函数,但字体自适应控件大小并没有现成的函数可调. - 本文实现了按钮上的字体随按钮大小变化而变化 (如上图所示) - 其他控件…

webgl入门-绘制三角形

绘制三角形 前言 三角形是一个最简单、最稳定的面,webgl 中的三维模型都是由三角面组成的。咱们这一篇就说一下三角形的绘制方法。 课堂目标 理解多点绘图原理。可以绘制三角形,并将其组合成多边形。 知识点 缓冲区对象点、线、面图形 第一章 web…

Denoising Diffusion Probabilistic Models 全过程概述 + 论文总结

标题:Denoising(🌟去噪)Diffusion Probabilistic Models(扩散概率模型) 论文(NeurIPS会议 CCF A 类):Denoising Diffusion Probabilistic Models 源码:hojona…

通过unsplash引入图片素材

如果您还没听说过——当您需要无版权费的照片用于项目时,无论是否用于商业目的,Unsplash 都是您的不二之选。我自己也经常用它来获取大型背景图像。 虽然他们为开发者提供了出色的 API,但他们还为您提供了通过 URL 直接访问随机图片的选项。…

《python编程从入门到实践》day39加更

# 昨日知识点回顾 添加主题、条目 # 今日知识点学习 19.1.3 编辑条目 1.URL模式edit——entry # learning_logs/urls.py ---snip---# 用于编辑条目的页面path(edit_entry/<int:entry_id>/, views.edit_entry, nameedit_entry), ] 2.视图函数edit_entry() # views.py fr…

《计算机网络微课堂》1-2:因特网概述

1-2&#xff1a;因特网概述 网络、互连网&#xff08;互联网&#xff09;和因特网因特网发展的三个阶段因特网的标准化工作因特网的组成 ‍ 网络、互连网&#xff08;互联网&#xff09;和因特网 我们首先介绍网络、互联网&#xff08;互连网&#xff09;因特网的基本概念&a…

linuxwindows硬件信息midecod和wmic命令

1、命令dmidecode -t实例 1.1命令格式 dmidecode -t [类型代码或名称 ] 指令 1.2获取系统信息 [rootlala docker]# dmidecode -t 1 1.3获取主板信息&#xff1a; [rootshanghai docker]# dmidecode -t 2 1.4获取CPU ID dmidecode -t 4 | grep ID 1.5获取系统序列号 …

C++STL---string知识汇总

前言 我们现在开始CSTL的学习&#xff0c;从这时开始我们就要锻炼自己查看英文文档的能力&#xff0c;每种数据结构都有上百个接口函数&#xff0c;我们把他们全部记下来是不可能的&#xff0c;所以我们只记最常见的20几个接口&#xff0c;其他的大概熟悉有什么功能&#xff0…

奇舞周刊第529期:万字长文入门前端全球化

周五快乐&#xff08;图片由midjourney生成&#xff09; 奇舞推荐 ■ ■ ■ 万字长文入门前端全球化 目前国内企业正积极开拓国际市场&#xff0c;国际化已成为重要的发展方向&#xff0c;因此产品设计和开发更需考虑国际化。本文介绍了语言标识、文字阅读顺序等诸多知识。然后…

卡特兰数-

是组合数学中一种常出现于各种计数问题中的数列。 一、简单介绍 卡特兰数是一个数列&#xff0c;其前几项为&#xff08;从第零项开始&#xff09; : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 47763…

LeetCode:279.完全平方数

class Solution:def numSquares(self, n: int) -> int:dp[i for i in range(n1)]for i in range(2,n1):for j in range(1,int(i**(0.5))1):dp[i]min(dp[i],dp[i-j*j]1)return dp[-1]代码解释 初始化 DP 数组&#xff1a; dp [i for i in range(n1)] 这里&#xff0c;dp[i]…

OpenAI策略:指令层级系统让大模型免于恶意攻击

现代的大模型&#xff08;LLMs&#xff09;不再仅仅是简单的自动完成系统&#xff0c;它们有潜力赋能各种代理应用&#xff0c;如网页代理、电子邮件秘书、虚拟助手等。然而&#xff0c;这些应用广泛部署的一个主要风险是敌手可能诱使模型执行不安全或灾难性的行动&#xff0c;…

探索集合python(Set)的神秘面纱:它与字典有何不同?

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、集合&#xff08;Set&#xff09;与字典&#xff08;Dictionary&#xff09;的初识 1. …

元组的创建和删除

目录 使用赋值运算符直接创建元组 创建空元组 创建数值元组 删除元组 自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元组&#xff08;tuple&#xff09;是Python中另一个重要的序列结构&#…

太空几乎没有阻力,飞船理论上能一直加速,为何还说星际旅行很难

太空几乎没有阻力&#xff0c;飞船理论上能一直加速&#xff0c;为何还说星际旅行很难&#xff1f; 答案 现代科学认为&#xff0c;我们的地球诞生于46亿年前&#xff0c;也就是太阳系诞生初期&#xff0c;在太阳系中一共有八大行星&#xff0c;而地球是唯一一颗诞生了生命的…

性能测试学习之基本概念和认识(一)

一、概念 1.性能测试&#xff1a;使用自动化工具&#xff0c;模拟不同场景&#xff0c;对软件各项性能指标进行测试和评估的过程 2.包括&#xff1a;a.后台处理程序的性能&#xff1b;b.应用服务器、数据库、架构设计是否存在瓶颈&#xff1b;c.服务器资源消耗(CPU、内存、磁…

游戏行业 2024 Q1报告 | 国内同比上升7.6%,海外收入同比环比双增长,码住!

作为中国音像与数字出版协会主管的中国游戏产业研究院的战略合作伙伴&#xff0c;伽马数据发布了《2024年1—3月中国游戏产业季度报告》。 数据显示&#xff0c; 2024年1—3月&#xff0c;中国游戏市场实际销售收入726.38亿元&#xff0c;同比增长7.60%&#xff0c;主要受移动游…

Linux防火墙之iptables(二)

一.SNAT策略概述 1.SNAT 策略的典型应用环境 局域网主机共享单个公网IP地址接入Internet&#xff08;私有IP不能在Internet中正常路由&#xff09; 局域共享上网 2.SNAT 策略的原理 源地址转换&#xff0c;Source Network Address Translation 修改数据包的源地址 未作SNAT转换…

一.架构设计

架构采用 ddd 架构&#xff0c;不同于传统简单的三层的架构&#xff0c;其分层的思想对于大家日后都是很有好处的&#xff0c;会给大家的思想层级&#xff0c;提高很多。 传统的项目 现有的架构 采取ddd架构&#xff0c;给大家在复杂基础上简化保留精髓&#xff0c;一步步进行…