50个Pandas的奇淫技巧:一网打尽各种索引 iloc,loc,ix,iat,at…

Django 前后端分离实战:网络设备运维系统 - 从登录认证到业务模块 这篇文章分享了Django+Vue前后端分离开发网络设备运维系统的实战经验,重点介绍了登录认证、全局布局和设备管理三大模块的实现。文章包含以下核心内容: 登录模块实现:包括表单验证、Token认证、记住密码功能,以及美观的UI设计(渐变背景、毛玻璃效果) 全局布局架构:采用侧边栏+顶部导航的响应式设计,支持菜单权限控制和多设备适配 业务功能开发:详细展示了设备分类和部门管理的CRUD功能实现,包括列表展示、搜索过滤、分页等功能 常见问题解决:提供了5个开发中常见问题的解决方案,如Vue Router警告、C 阅读详情

72ace94d14c80fee3df5a1650f6a7b8f.png

数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节。因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力。这里开个专题,总结下Pandas的使用方法,方便大家,也方便自己查阅。

这个专题叫做:【50个Pandas的奇淫技巧】,今天这个算是第一讲,后续慢慢更新。

一、Pandas索引概述

很多人在使用Pandas处理数据时,总会迷失在data[]、iloc()、loc()、ix()中,似乎记得,又似乎不记得,每到用时都需要百度,不知所以然的解决了问题,下次继续百度,记忆点基本上非常混乱。总结本文,希望能解决这个问题,通过一个简单的案例彻底搞明白这几种索引方法到底有什么区别。

日常使用中,推荐使用loc和iloc进行索引,loc是指location的意思,iloc中的 i 是指integer,这两个方法容易混淆,可以使用特殊方式来加强记忆。

iloc:基于位置,用行号、列号进行索引,i 可以看着 int,因此 iloc 只能用整数 来索引,例如data.iloc[0:2,:]

loc :基于标签,用行名、列名进行索引,数据的index经常为整数,因此 loc 的使用范围要远高于iloc,loc可以使用整数切片、名称(index,columns)索引、也可以切片和名称混合使用。例如:data.loc[0:5:,'row1':'row2']

我们简单构造一个数据集,在下面的案例中需要用到。

import pandas as pd
import numpy  as np
data = pd.DataFrame(np.arange(25).reshape(5, 5), 
                  index = ['row1', 'row2','row3','row4','row5'], 
                  columns=['col1', 'col2','col3','col4','col5'])
data 
      col1  col2  col3  col4  col5
row1     0     1     2     3     4
row2     5     6     7     8     9
row3    10    11    12    13    14
row4    15    16    17    18    19
row5    20    21    22    23    24

创建的表格数据如下:

c8230415e133a308e3bd76ca4e26f94c.png

二、直接用列名索引

取一列:data['col1'] ,即取得第一列,得到的是一个Series对象。

取多列:data[['col1','col2']] ,即取得第一列、第二列,得到的是一个DataFrame对象。

注 意:用data['row1'] 、data[0]、data[:,0]、data[0,:]、data[:,'col1':'col2'] 统统都会报错的,这类命令只能用来按列名取一列或多列。

data['col1']
row1     0
row2     5
row3    10
row4    15
row5    20

49c34156460b6c103ad9ba66a3ec48ed.png

data[['col1','col2']] 
      col1  col2
row1     0     1
row2     5     6
row3    10    11
row4    15    16
row5    20    21


#下面的命令直接应用都会报错,但是用loc 和 iloc 就不会报错
data['row1']
data[0]
data[:,0]
data[0,:]
data[:,'col1':'col2'] 
#TypeError: '(slice(None, None, None), 0)' is an invalid ke

9d0ff3c1b76e968226f72d33c6b151f4.png

三、直接用行号索引

data[0:2] 代表取得第0行和第1行,不包含最后一个。

注 意:只取一行的话,要用data[0:1],不能用data[0],data[0:2,]也会报错

data[0:2]
      col1  col2  col3  col4  col5
row1     0     1     2     3     4
row2     5     6     7     8     9

ca3b26651dff1833a4f191e1f7b06d6a.png

四、iloc按行号、列号索引

官方:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html

1、行索引

1)取一行 :data.iloc[0] 、data.iloc[0,:]

2)取多行 :data.iloc[[0,2]] 、data.iloc[[0,2],:]

3)取连续多行 :data.iloc[0:2] 、data.iloc[0:2,:]

2、列索引

4)取一列 :data.iloc[:,0]

5)取多列 :data.iloc[:,[0,2]]、data.iloc[:,[0,2]]

6)取连续多列 :data.iloc[:,0:2]

注 意:

取行的时候可以不提列,也可以用 ",:" 来指全列

取列的时候必须用":,"来指定全行。

可以使用一个数字来代表一个,可以使用一个列表[a,b]代表多个,也可以使用a:b代表连续多个。

data.iloc[0]
col1    0
col2    1
col3    2
col4    3
col5    4

ee6683e723a8022711a0283de14a74d1.png

data.iloc[:,2:4]
      col3  col4
row1     2     3
row2     7     8
row3    12    13
row4    17    18
row5    22    23

cd46639d29cf5423b4bc49d214d273bf.png

data.iloc[:,[2,4]]
      col3  col5
row1     2     4
row2     7     9
row3    12    14
row4    17    19
row5    22    24

f3b2db3645ff0f156ce951178d7d0898.png

五、loc按行名、列名索引

官方网址:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html

1、行索引

取一行:data.loc['row1'] 、data.loc['row1',:]

取多行:data.loc[['row1','row2']] 、data.loc[['row1','row2'],:]

取连续多行:data.loc['row1':'row2'] 、data.loc['row1':'row2',:]

2、列索引

取一列:data.loc[:,'col1']

取多列:data.loc[:,['row1','row2']]

取连续多列:data.loc[:,'row1':'row2']

注 意:

取行的时候可以不提列,也可以用",:"来指全列。

取列的时候必须用":,"来指定全行。

可以使用一个数字来代表一个,可以使用一个list ['a','b']代表多个,也可以使用'a':'b'代表连续多个。

data.loc[:,'col1':'col3'] 
      col1  col2  col3
row1     0     1     2
row2     5     6     7
row3    10    11    12
row4    15    16    17
row5    20    21    22

a478232bd60679417e275ebb601f676b.png

data.loc[:,['col1','col3']]
      col1  col3
row1     0     2
row2     5     7
row3    10    12
row4    15    17
row5    20    22

2afc26c7850831cf295928189939c8ed.png

#当索引为整数时,可以用整数进行索引
data = pd.DataFrame(np.arange(25).reshape(5, 5), 
                  columns=['col1', 'col2','col3','col4', 'col5'])
   col1  col2  col3  col4  col5
0     0     1     2     3     4
1     5     6     7     8     9
2    10    11    12    13    14
3    15    16    17    18    19
4    20    21    22    23    24


data.loc[0:3,'col1':'col3'] 
   col1  col2  col3
0     0     1     2
1     5     6     7
2    10    11    12
3    15    16    17

0b803f7a8d74e721394f64683fcb4755.png

六、使用iat和at

iat 和 at 只能取单个元素,iat 使用行、列索引,at 使用行、列名,但是其功能被 iloc 和 loc 包含,因此不推荐。

data.iat[1,2] 
7

eb26b0785e1866567f4badc921e07f73.png

data.at['row4','col4'] 
18

ea372938c57f9b3ba2dd393f2e02ce84.png

七、最后总结(重点!!!!)

正常情况下,推荐使用 iloc 和 loc。最核心的点记住,取行可以不提列,取列必须提行,可以用一个数字,一个list,或者一个区间来取行列。ix新版的已经弃用了,所以可以不用太关注。


 
推荐阅读:
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

点阅读原文,看B站我的视频!

RK3568平台开发系列讲解(UBOOT篇)u-boot启动流程 U-Boot(Universal Bootloader)是一种开源的引导加载程序,广泛用于嵌入式系统中。它的主要功能是初始化硬件设备,加载操作系统内核,并将控制权交给操作系统。U-Boot的启动流程可以分为多个阶段,以下是典型的U-Boot启动流程: 阅读详情

相关推荐

解决com.kingbase8.util.KSQLException: This _connection has been closed.

一个消息管理系统,系统采用kingbase8数据库,数据库采用单体模式,后台应用也采用springboot单体模式。系统正式上线后,出现几个JDBC响应的异常信息: com.kingbase8.util.KSQLException: An I/O error occurred while sending to the backend. java.net.SocketTimeoutException: Read timed out.

qq_38127559的博客 2757

Python学习.iloc和.loc区别、联系与用法

python之loc和iloc详细解释

weixin_42424208的博客 4万+

别再只盯着DDR5了!聊聊3D DRAM:它凭什么能解决AI算力的内存墙难题?

本文深入探讨了3D DRAM技术如何突破AI算力的内存墙限制。通过立体堆叠架构,3D DRAM在存储密度、带宽和延迟方面实现显著提升,有效解决AI训练和推理中的内存瓶颈问题。文章还分析了三星、SK海力士等巨头的技术路线图,并指出商业化面临的挑战与机遇。

weixin_42685438的博客 189

loc和iloc的区别

df1.iloc[0:3, 0:5] 取的是下标为0到3但不包括3的行(或者理解为从下标为0开始取3行),下标为0到5但不包括5的列(或者理解为从下标为0开始取5列)df1.loc[0:3,'name':'Total'] 取的是从第0行到第4行,'name'列到‘Total’的数据,切片是左闭右闭的。但行列名为数字时,loc也可以索引数字,但这里的数字不一定从0开始编号,是对应具体行列名的数字!iloc使用顺序数字来索引数据,而不能使用字符型的标签来索引数据;注意:这里的顺序数字是指从0开始计数!

long_jing_1003的博客 3879

Oracle19c集群节点故障恢复:从主机重装到重新加入集群的完整指南

本文详细介绍了Oracle19c集群节点故障恢复的全过程,从主机重装到重新加入集群的完整指南。重点讲解了保持集群配置一致性、彻底清理故障节点残留信息和分阶段验证等关键恢复原则,帮助DBA高效解决节点故障问题,确保集群稳定运行。

weixin_42524276的博客 256

【VSCode】【Clangd】从零构建:基于LLVM/Clangd+MINGW+CMake的Windows高性能C/C++开发环境实战

本文详细介绍了如何在Windows平台搭建基于LLVM/Clangd+MINGW+CMake的高性能C/C++开发环境。通过VSCode配置Clangd语言服务器,结合MINGW提供的GCC工具链和CMake的跨平台构建能力,实现轻量级、高效率的开发体验。文章包含从环境准备到实战配置的完整指南,特别适合追求开发效率和跨平台兼容性的开发者。

weixin_28839629的博客 313

python中iloc与loc的区别

loc和iloc都是pandas工具中定位某一行的函数,loc是location的意思,而iloc中的 i 指的是Integer,二者的区别如下: loc:通过行标签名称索引行数据 iloc:通过行号索引行数据 示例数据 import numpy as np import pandas as pd data=DataFrame(np.arange(16).reshape(4,4),index=list("ABCD"),columns=list("wxyz")) print(data) 输出如下:

m0_38132177的博客 1万+

第八章 MobileNetv3网络详解

本文介绍了基于互补的搜索技术和新颖的架构设计的MobileNets的下一代。MobileNetV3通过硬件感知网络架构搜索(NAS)和NetAdapt算法相结合,针对移动电话CPU进行优化,随后通过新颖的架构改进技术进行了进一步提高。本文开始探索自动化搜索算法和网络设计如何相互协作,以利用互补的方法改进整体技术水平。通过此过程,我们创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用情况。

ADICDFHL的博客 1万+

【python数据分析基础】—pandas中loc()与iloc()的介绍与区别

pandas中loc()与iloc()的介绍与区别

sodaloveer的博客 3万+

A*(star)算法原理讲解以及程序实现(基于Python)

本文将以迷宫探索最优路径为例,讲解A *搜索算法原理及其程序实现。在原理讲解部分,首先从为什么要使用A *搜索算法和A *搜索算法的全局最优逻辑出发,讲解A *算法的原理。其次对A *的行动函数g(n)和启发函数h(n)的细节进行了讲解说明,并补充了启发函数的选择对于A *算法的影响。在程序实现部分,首先从程序流程框图出发,解释A *算法的流程。其次按函数的类划分并讲解主要代码,接着展示程序的运行结果,最后对A *算法进行总结分析。

m0_73366745的博客 8282

RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏

老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 224

iloc[ ]函数(Pandas库)

问题:iloc函数是干什么的? 回答:在数据分析过程中,很多时候需要从数据表中提取出相应的数据,而这么做的前提是需要先“索引”出这一部分数据。iloc函数,属于pands库,全称为index location,即对数据进行位置(location)索引(index)。 问题:iloc函数怎么用? 回答:iloc[a,b],其中a是行数,b是列数。具体a和b的输入有以下几种形式: 1.iloc[a,b]:取第a行第b列的数据。 注意,在iloc中认为数据中的行数和列数都是如图这样定义的 图1...

Fwuyi的博客 15万+

FPGA实现的AES加解密算法——Verilog源代码详解

本文将介绍基于FPGA的AES加解密算法的Verilog实现,并提供相应的源代码。根据密钥长度的不同,AES算法分为AES-128、AES-192和AES-256三种模式。对于已知的明文-密钥组合,可以使用在线的AES加解密工具计算出正确的密文,然后将该密文与FPGA加速器的输出进行比较。本文以AES-128算法为例,介绍基于FPGA的AES加解密算法的设计思路和Verilog实现。以上是基于FPGA的AES加解密算法的Verilog实现的相关内容。模块接受输入的明文和密钥,并输出加密后的密文。

HackSquad的博客 1977

【Python】50个Pandas的奇淫技巧:一网打尽各种索引 iloc,loc,ix,iat,at…

数据处理,也是风控非常重要的一个环节,甚至说是模型成败的关键环节。因此,娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力。这里开个专题,总结下Pandas的使用方法,方便大家,也方便自己查阅。这个专题叫做:【50个Pandas的奇淫技巧】,今天这个算是第一讲,后续慢慢更新。一、Pandas索引概述很多人在使用Pandas处理数据时,总会迷失在data[]、ilo...

fengdu78的博客 376

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

python数据分析之pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]

1 引言 Pandas是作为Python数据分析著名的工具包,提供了多种数据选取的方法,方便实用。本文主要介绍Pandas的几种数据选取的方法。 Pandas中,数据主要保存为Dataframe和Series是数据结构,这两种数据结构数据选取的方式基本一致,本文主要以Dataframe为例进行介绍。   在Dataframe中选取数据大抵包括3中情况:   ** 1)行(列)选取(单维度选取):d...

刘明的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)

pandas为我们提供了多种切片方法,而要是不太了解这些方法,就会经常容易混淆。下面举例对这些切片方法进行说明。数据介绍先随机生成一组数据:In [5]: rnd_1 = [random.randrange(1,20) for x in xrange(1000)] ...: rnd_2 = [random.randrange(1,20) for x in xrange(1000)] ..

Foresee的博客 11万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python 技巧汇总:一网打尽各种索引 iloc,loc,ix,iat,at…

数据处理,是数据分析、数据模型成败的关键环节。娴熟简洁的数据处理技巧,是提高建模效率和建模质量的必要能力。 今天给大家总结下Pandas的使用方法,方便大家,也方便自己查阅。 喜欢记得收藏、关注、点赞。 一、Pandas索引概述 很多人在使用Pandas处理数据时,总会迷失在data[]、iloc()、loc()、ix()中,似乎记得,又似乎不记得,每到用时都需要百度,不知所以然的解决了问题,下次继续百度,记忆点基本上非常混乱。总结本文,希望能解决这个问题,通过一个简单的案例彻底搞明白这几种索引方法到底有

m0_59596937的博客 2670

Pandas中[],loc,iloc,at,iat,ix的用法区别和规律总结 ——Pandas系列(2)

上篇文章介绍了Panda的一些常用的方法,发现用法实在太多,无法一一列举,其实多用几次就发现Pandas的数据切片方法是有使用规律的。数据切片方面常用的方法有loc,iloc,at,iat,ix,dataframe[],这几个方法有很多相似之处。我们来区分一下: 首先我们来造一批测试数据 df=pd.DataFrame(np.arange(42).reshape(7,6),columns=l...

AI量化交易实验室 7284

pandas 入门:DataFrame的创建,读写,插入和删除

本文介绍了Pandas创建和读取DataFrame的核心操作方法。主要内容包括:1)通过读取CSV/Excel文件、字典、数组或创建空DataFrame四种方式构建DataFrame;2)使用列名、列号或.loc/.iloc方法按列读取数据;3)通过行标签(.loc)、行号(.iloc)或已弃用的.ix方法按行读取数据;4)使用双重索引或.loc[row,col]格式按单元格精确读取数据。文章通过代码示例详细演示了各种操作方法的区别与适用场景,特别强调了索引设置对数据读取的影响,是Pandas基础操作的实用

不去想结果,一直在路上 30万+

DataFrame 的访问:[]选择列,[[]]选择多列,loc[]选择行,loc[[]]选择多行,iloc[],at[],iat[],ix[],loc[]行列切片,布尔选择

http://liao.cpython.org/pandas10/ []选择列:DataFrame使用了[ ]则是选择了一个字段所有数据即一列,而Series则是会得到某行的数据。 val = np.arange(10,40).reshape(10,3) idx = 'ax bx cx'.split() df1 = pd.DataFrame(val,columns = idx) df1['a...

ycyrym的博客 2万+

DataFrame数据筛选loc,iloc,ix,at,iat

文章目录条件筛选单条件筛选多条件筛选排除特定行索引筛选切片操作loc函数ilocix函数at函数iat函数 众所周知pandas的DataFrame数据结构提供了功能强大的数据操作功能,例如运算,筛选,统计等。 今天我们就来谈一谈其强大的数据筛选功能,主要包括两大类,按照条件筛选和按照索引筛选。可以对行进行筛选,也可以按照列进行筛选。 import numpy as np import panda...

我是天才很好 3257

【Python】一网打尽Pandas中的各种索引 iloc,loc,ix,iat,at,直接索引

一、索引的概述很多人在使用Pandas选取数据时,总会迷失在data[]、iloc()、loc()、ix()、at()、iat()中,似乎记得,又似乎不记得,每到用时都需要百度,不知所以然...

fengdu78的博客 1656

pandas获取行数据的loc,iloc,ix,at,iat方法与通过条件获取行数据的方法

loc是指location的意思,iloc中的i是指integer。这两者的区别如下: loc works on labels in the index. iloc works on the positions in the index (so it only takes integers) 也就是说loc是根据index来索引, 如上table定义了一个index,那么loc就根据这个index...

weixin_43668299的博客 5697

Pandas DataFrame的loc、iloc、ix和at/iat浅析

1、loc:通过标签选取数据, 通过index和columns的值进行选取。loc方法有两个参数,按顺序控制行列选取。 #示例数据集 df=pd.DataFrame(np.arange(12).reshape(4,3),columns=list('abc'),index=list('defg')) df Out[189]: a b c d 0 1 2 e 3 4 5 f 6 7 8 g 9 10 11 #直接索引行 df.loc['d'] Out[19

我是尘客哥 1408

pandas:ix 、loc 、 iloc区别、.at、.iat和.get_value

1 loc——通过行标签索引行数据 1.loc[1]表示索引的是第1行(index 是整数) data = [[1,2,3],[4,5,6]] index = [0,1] columns=['a','b','c'] df = pd.DataFrame(data=data, index=index, columns=columns) print (df.loc[1]) ''' a 4 b ...

错位的梦寐的博客 7586

pandas loc, iloc, ix, at, iat用法

1.loc用法 loc是基于行的index,可以选择特定的行,同时还可以根据列名称选定指定列。 iloc是基于行/列的位置(position)来进行选择 def select_test(): a = [i for i in range(10)] b = [2*x + 0.1 for x in a] data = {"x": a, "y": b} tmp = pd.DataFrame(data, index=["r1", "r2", "r3", "r4", "r5", "r6"

bitcarmanlee的博客 1227
上一篇: 10秒破解一辆特斯拉?!网安人员再曝特斯拉低级漏洞,成本只要1000块?
下一篇: 秒懂 23 种设计模式!有点污,但真得秒啊...
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值