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: int32s["1班"]["张三"]
68s["1班"]["张三"]
68
​​​​​
s["1班","张三"]
68s.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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++——list的实现以及源码

前言: 最近学习了clist的实现,这让我对迭代器的理解又上升了一个新的高度,注意:代码里的list是放在一个叫zgw的命名空间里边,但是在实现list的代码中没有加namespace,这里给个注意,以后复习时能…

颜色值进制转换

颜色值进制转换 专业的和非专业程序员在编程时都碰到过颜色值的表达式。特别是在编制网页和设计界面时,都要选择颜色。各语言的颜色值表达式就两种,十六进制的颜色值hex$和十进制的RGB格式。现成的调色板颜色表也是这两种格式。写代码时会遇到写颜色值码…

Linux-组管理和权限管理

1 Liunx组的基本介绍: 在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件都有所有者、所在组、其他组的概念 所有者所在组其它组改变用户所在的组 2 文件/目录的所有者 一般文件的创建者,谁创建了该文件,就…

垃圾回收机制及算法

文章目录 概要对象存活判断引用计数算法可达性分析算法对象是否存活各种引用 垃圾收集算法分代收集理论复制算法标记清除算法标记-整理算法 概要 垃圾收集(Garbage Collection, 下文简称GC),其优缺点如下: 优点&#…

Shell

Linux中shell是Linux内核的一个外层保护工具,负责用户与内核互交。是一直命令行解析器,是指一直应用程序,且提供一个界面 还是一种编程语言. 查看当前系统的Shell 查看有哪些shell,用cat /etc/shells 查看当前系统默认的shell&…

二十八篇:嵌入式系统实战指南:案例研究与未来挑战

嵌入式系统实战指南:案例研究与未来挑战 1. 引言 1.1 嵌入式系统的重要性及其应用广度 在当今快速发展的技术领域中,嵌入式系统扮演着至关重要的角色。这些系统是专门设计的计算机硬件和软件的组合,旨在执行特定任务,如控制、监…

牛马真的沉默了,入职第一天就干活

入职第一天就干活的,就问还有谁,搬来一台N手电脑,第一分钟开机,第二分钟派活,第三分钟干活,巴适。。。。。。 打开代码发现问题不断 读取配置文件居然读取两个配置文件,一个读一点,…

Leetcode算法题笔记(3)

目录 矩阵101. 生命游戏解法一解法二 栈102. 移掉 K 位数字解法一 103. 去除重复字母解法一 矩阵 101. 生命游戏 根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰何顿康威在 1970 年发明的细胞自动机。 给定一个包含 m n 个格子…

计算机网络——TCP 协议的三次握手 / 四次挥手

简述 TCP / UDP 协议都是传输层的协议。 UDP 是面向无连接的协议,就是说发送端不在乎消息数据是否传输到接收端了,所以会出现数据丢失的情况,所以可靠性也不高。 TCP 是面向连接的、可靠的、基于字节流的传输层协议。所谓面向连接的&#…

机器学习算法手撕(一):KD树

import math import matplotlib.pyplot as pltclass Node:def __init__(self, data, leftNone, rightNone):self.data dataself.left leftself.right right# 创建KDTree类 class KDTree:def __init__(self, k):self.k kdef create_tree(self,dataset,depth):if not dataset…

SpringBoot使用rsa-encrypt-body-spring-boot实现接口加解密

废话不多说&#xff0c;直接上代码 引入依赖 <dependency><groupId>cn.shuibo</groupId><artifactId>rsa-encrypt-body-spring-boot</artifactId><version>1.0.1.RELEASE</version> </dependency>配置文件 rsa:encrypt:# 是…

电表远传抄表是什么?

1.电表远传抄表&#xff1a;简述 电表远传抄表&#xff0c;又称为远程控制自动抄表系统&#xff0c;是电力行业的智能化技术运用&#xff0c;它通过无线或通信网络技术&#xff0c;完成对电表数据信息的远程收集解决。此项技术不仅提升了抄水表高效率&#xff0c;降低了人工偏…

Java订餐系统源码 springboot点菜系统源码

Java订餐系统源码 springboot点菜系统源码 源码下载地址&#xff1a;https://download.csdn.net/download/xiaohua1992/89341358 功能介绍&#xff1a; 前台登录&#xff1a;前台登录&#xff1a; ①首页&#xff1a;菜品信息推荐、菜品信息展示、查看更多 ②菜品信息&…

【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数

本节博客是对阅读剑指offer后的笔记归纳总结&#xff0c;有需要借鉴即可。 目录 1.p21-p25内容概要2.询问语法概念常考&#xff1a;CPP关键字理解举例&#xff1a;sizeof空类 3.分析代码举例&#xff1a;类中拷贝构造的无限递归问题 4.写代码常考点&#xff1a;类内成员函数、迭…

keycloakAsana SSO对接配置

说明&#xff1a;Keycloak与Asana单点登录对接&#xff0c;Keycloak做IDP&#xff0c;Asana做SP&#xff1b; 一、环境信息 操作系统&#xff1a;ubuntu keycloak&#xff1a;21.1.2 Asana enterprise&#xff1b;更新apt软件包索引&#xff1a; sudo apt update检查是否已安…

数组-最接近给出数字的三数之和

题目描述 解题思路 这里使用三层for循环&#xff0c;暴力解法穷举所有三个数和的可能性&#xff0c;注意三层循环里的索引不要重复。 代码实现 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返…

Introduction of Internet 计算机网络概述

计算机网络的概念 计算机网络的定义&#xff1a; 多台独立的计算机通过通信线路实现资源共享的计算机系统 计算机网络的组成 资源子网&#xff1a;提供共享的软件资源和硬件资源 通信子网&#xff1a;提供信息交换的网络结点和通信线路 计算机网络类型 按照拓扑排序 星型…

Transformer详解(1)-结构解读

Transormer块主要由四个部分组成&#xff0c;注意力层、位置感知前馈神经网络、残差连接和层归一化。 1、注意力层(Multi-Head Attention) 使用多头注意力机制整合上下文语义&#xff0c;它使得序列中任意两个单词之间的依赖关系可以直接被建模而不基于传统的循环结构&#…

【C语言】八进制、十六进制

前言 在我们日常生活中使用的数往往是十进制的&#xff0c;而当我们学习C语言后我们会接触到许多不同的进制并且时常需要去思考与使用这些不同的进制&#xff08;尤其是2的幂相关的进制&#xff0c;因为这种计数系统比十进制更接近于计算机的二进制系统&#xff09;&#xff0…

【Linux初探】:解锁开源世界的神秘钥匙

文章目录 &#x1f680;一、了解Linux&#x1f525;二、Linux 的发行版❤️三、Linux应用领域&#x1f4a5;四、Linux vs Windows & mac &#x1f680;一、了解Linux Linux是一种自由、开放源代码的操作系统&#xff0c;它的内核由芬兰计算机科学家Linus Torvalds在1991年创…