pandas:loc索引器

loc索引器

使用的索引可能不是整数,而是自定义的!!!

表的列索引

列索引是最常见的索引形式,一般通过[]来实现。通过[列名]可以从DataFrame中取出相应的列,返回值为Series

import pandas as pd
import numpy as npdf = pd.read_csv('xuexi.csv', usecols = ['School', 'Grade', 'Name', 'Gender', 'Weight', 'Transfer'])
print(df['Name'].head())

如果要取出多个列,则可以通过[列名组成的列表],其返回值为一个DataFrame

print(df[['Name', 'Gender']].head())

此外,若要取出单列,且列名中不包含空格,则可以用.列名取出,这和[列名]是等价的。

print(df.Name.head())

序列的行索引

以字符串为索引的Series

如果取出单个索引的对应元素,则可以使用[item],若Series只有单个值对应,则返回这个标量值,如果有多个值对应,则返回一个Series

df = pd.Series(data=[1, 2, 3, 4, 5],index=['a', 'b', 'a', 'a', 'e']
)
print(df['a'])
# a    1
# a    3
# a    4
# dtype: int64print(df['e'])
# 5

如果取出多个索引的对应元素,则可以使用[items的列表]

print(df[['a', 'b']])
# a    1
# a    3
# a    4
# b    2
# dtype: int64

如果想要取出某两个索引之间的元素,并且这两个索引是在整个索引中唯一出现,则可以使用切片,,同时需要注意这里的切片会包含两个端点

df = pd.Series(data=[1, 2, 3, 4, 5],index=['a', 'b', 'c', 'd', 'e']
)
print(df['a':'c'])
# a    1
# b    2
# c    3
# dtype: int64

如果前后端点的值重复出现,那么需要经过排序才能使用切片。

df = pd.Series(data=[1, 2, 3, 4, 5],index=['a', 'b', 'a', 'a', 'e']
)
print(df.sort_index()['a':'b'])

以整数为索引的Series

在使用数据的读入函数时,如果不特别指定所对应的列作为索引,那么会生成从0开始的整数索引作为默认索引。

和字符串一样,如果使用[int][int_list],则可以取出对应索引元素的值。

df = pd.Series(data=[1, 2, 3, 4, 5],index=[1,2,1,1,5]
)
print(df[1])
# 1    1
# 1    3
# 1    4
# dtype: int64print(df[2])
# 2
print(df[[1,2]])
# 1    1
# 1    3
# 1    4
# 2    2
# dtype: int64

如果不想陷入麻烦,那么请不要把纯浮点以及任何混合类型(字符串、整数、浮点类型等的混合)作为索引,否则可能会在具体的操作时报错或者返回非预期的结果,并且在实际的数据分析中也不存在这样做的动机。

对于表而言,有两种索引器,一种是基于元素loc索引器,另一种是基于位置iloc索引器。

loc索引

前面的操作目的是列的获取,下面是行的获取

loc索引器的一般形式是loc[*, *],其中第一个*代表行的选择,第二个*代表列的选择,如果省略第二个位置写作loc[*],这个*是指行的筛选。其中,*的位置一共有五类合法对象,分别是:

  • 单个元素
  • 元素列表
  • 元素切片
  • 布尔列表
  • 函数

利用set_index方法把Name列设为索引。

import pandas as pd
import numpy as npdf = pd.read_csv('xuexi.csv', usecols = ['School', 'Grade', 'Name', 'Gender', 'Weight', 'Transfer'])df_demo = df.set_index('Name')
print(df_demo.head())

单个元素

直接取出相应的行或列,如果该元素在索引中重复则结果为DataFrame,否则为Series

print('选取Qiang Sun的数据')
print(df_demo.loc['Qiang Sun']) # 选取Qiang Sun的数据 多个数据
console.divider()
print(df_demo.loc['Quan Zhao']) # 选取Quan Zhao的数据 单个数据

输出:

选取Qiang Sun的数据School      Grade  Gender  Weight Transfer
Name
Qiang Sun            Tsinghua University     Junior  Female    53.0        N
Qiang Sun            Tsinghua University  Sophomore  Female    40.0        N
Qiang Sun  Shanghai Jiao Tong University     Junior  Female     NaN        N
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
School      Shanghai Jiao Tong University
Grade                              Junior
Gender                             Female
Weight                               53.0
Transfer                                N
Name: Quan Zhao, dtype: object

可以同时选择行和列。

print(df_demo.loc['Qiang Sun', 'School']) # 返回Series
console.divider()
print(df_demo.loc['Quan Zhao', 'School']) # 返回单个元素

输出:

Name
Qiang Sun              Tsinghua University
Qiang Sun              Tsinghua University
Qiang Sun    Shanghai Jiao Tong University
Name: School, dtype: object
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Shanghai Jiao Tong University

元素列表

取出列表中所有元素值对应的行或列。

print(df_demo.loc[['Qiang Sun','Quan Zhao'], ['School','Gender']])
#                                   School  Gender
# Name
# Qiang Sun            Tsinghua University  Female
# Qiang Sun            Tsinghua University  Female
# Qiang Sun  Shanghai Jiao Tong University  Female
# Quan Zhao  Shanghai Jiao Tong University  Female

元素切片

列表内使用切片

如果是唯一值的起点和终点字符,那么就可以使用切片。

print(df_demo.loc['Gaojuan You':'Gaoqiang Qian', 'School':'Gender'])
#                                       School      Grade  Gender
# Name
# Gaojuan You                 Fudan University  Sophomore    Male
# Xiaoli Qian              Tsinghua University   Freshman  Female
# Qiang Chu      Shanghai Jiao Tong University   Freshman  Female
# Gaoqiang Qian            Tsinghua University     Junior  Female

如果DataFrame使用整数索引,其使用整数切片的时候和上面字符串索引的要求一致,都是元素切片,包含端点且起点、终点不允许有重复值。

布尔列表

传入loc的布尔列表与DataFrame长度相同,且列表为True的位置所对应的行会被选中,False则会被剔除。

print(df_demo.loc[df_demo.Weight>70].head())

也可以通过isin方法返回的布尔列表等价写出。

print(df_demo.loc[df_demo.Grade.isin(['Freshman', 'Senior'])].head())

对于复合条件而言,可以用|(或), &(且), ~(取反)的组合来实现

print(df_demo[(df_demo['School'] == 'S_1') & (df_demo['Grade'] == 'G_1')| (df_demo['Weight'] > 70)
])

函数

这里的函数,必须以前面的四种合法形式之一为返回值,并且函数的输入值为DataFrame本身。函数的形式参数x本质上即为df_demo

def condition(x:pd.DataFrame):return ((x['School'] == 'S_1') & (x['Grade'] == 'G_1')| (x['Weight'] > 70))
print(df_demo.loc[condition])

不要使用链式赋值。在对表或者序列赋值时,应当在使用一层索引器后直接进行赋值操作,这样做是由于进行多次索引后赋值是赋在临时返回的copy副本上的,而没有真正修改元素从而报出SettingWithCopyWarning警告。

  • 错误:df[df['A'] > 1]['B'] = 100
  • 正确:df.loc[df['A'] > 1, 'B'] = 100

Joyful-Pandas-课程详情 | Datawhale

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

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

相关文章

3.2 Go 返回值详解

在 Go 语言中,函数调用完成后会产生一个返回值,该值的类型和数量取决于函数定义。返回值在函数调用结束时通过 return 语句返回,具体规则如下: 一. 返回值的基本规则 1.返回值类型: 返回值必须有类型,类…

PCIE模式配置

对于VU系列FPGA,当DMA/Bridge Subsystem for PCI Express IP配置为Bridge模式时,等同于K7系列中的AXI Memory Mapped To PCI Express IP。

关注搜索引擎蜘蛛压力

以前在建站的时候,他们说蜘蛛来抓取的频率越多越好,因为蜘蛛来抓取说明了网站更新速度快,受搜索引擎的欢迎,但是在最近的网站统计中,发现很多蜘蛛爬取的频次非常的高,比如有的蜘蛛一天能来网站几万次&#…

【Uniapp-Vue3】request各种不同类型的参数详解

一、参数携带 我们调用该接口的时候需要传入type参数。 第一种 路径名称?参数名1参数值1&参数名2参数值2 第二种 uni.request({ url:"请求路径", data:{ 参数名:参数值 } }) 二、请求方式 常用的有get,post和put 三种,默认是get请求。…

4070s显卡部署Deepseek R1

电脑配置: 处理器:AMD 7950X 内存:32G 硬盘:致态tiplus7100 2t 显卡:4070 super 12G 部署方法: 1. 到ollama官网下载安装ollama https://ollama.com/https://ollama.com/https://ollama.com/https://…

工业相机 SDK 二次开发-Sherlock插件

本文介绍了 sherlock 连接相机时的插件使用。通过本套插件可连接海康的工业相机。 一.环境配置 1. 拷贝动态库 在用户安装 MVS 目录下按照如下路径 Development\ThirdPartyPlatformAdapter 找到目 录为 DalsaSherlock 的文件夹,根据 Sherlock 版本找到…

three.js+WebGL踩坑经验合集(4.1):THREE.Line2的射线检测问题(注意本篇说的是Line2,同样也不是阈值方面的问题)

上篇大家消化得如何了? 笔者说过,1级编号不同的两篇博文相对独立,所以这里笔者还是先给出完整代码,哪怕跟(3)没有太大区别。 这里我们把线的粗细调成5(排除难选中的因素)&#xff…

doris:JSON导入数据

本文介绍如何在 Doris 中导入 JSON 格式的数据文件。Doris 支持导入标准 JSON 格式数据,通过配置相关参数,可以灵活地处理不同的 JSON 数据结构,并支持从 JSON 数据中抽取字段、处理嵌套结构等场景。 导入方式​ 以下导入方式支持 JSON 格式…

信息收集 CTF 1 挑战通关指南

大家好!今天我想和大家分享 Information Gathering CTF 1 挑战的完整攻略。我将解释我是如何逐步攻克每一个 flag,并使用了哪些工具。放心,我不会直接给出 flag,因为学习的目的不是直接提交答案,而是掌握解决问题的方法…

PHP防伪溯源一体化管理系统小程序

🔍 防伪溯源一体化管理系统,品质之光,根源之锁 🚀 引领防伪技术革命,重塑品牌信任基石 我们自豪地站在防伪技术的前沿,为您呈现基于ThinkPHP和Uniapp精心锻造的多平台(微信小程序、H5网页&…

使用MQTT.fx向阿里云物理网平台上报物理模型数据

MQTT向阿里云物理网平台上报物理模型数据 一、前言二、测试三、结束语 一、前言 上一篇文章介绍了阿里云物联网平台的基本使用(文章入口),本篇博客接着来讲,主要介绍如何使用MQTT连接测试工具向阿里云物联网平台上报物理模型数据。…

【阅读笔记】基于图像灰度梯度最大值累加的清晰度评价算子

本文介绍的是一种新的清晰度评价算子,基于图像灰度梯度最大值累加 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类:灰度梯度评价函数、频域函数和统计学函数,其中灰度梯度评价函数具有计算简单,评价效果好等优…

数据库底层存储的基本逻辑

1. 数据库、表空间、磁盘是多对多的关系 一个表空间可以分散到多个磁盘上,一个磁盘上也可以有多个表空间; 一个数据库可以分散存储在多个磁盘上,一个磁盘也可以包含多个数据库。 2. 一个表只能属于一个库,也只能对应一个表空间…

80,【4】BUUCTF WEB [SUCTF 2018]MultiSQL

53,【3】BUUCTF WEB october 2019 Twice SQLinjection-CSDN博客 上面这个链接是我第一次接触二次注入 这道题也涉及了 对二次注入不熟悉的可以看看 BUUCTF出了点问题,打不开,以下面这两篇wp作为学习对象 [SUCTF 2018]MultiSQL-CSDN博客 …

docker-registry

安装依赖 apt install apache2-utils设置密码 htpasswd -Bbn 用户名 密码 >/data/registry_hub/passwd#docker私服部署 docker run -d -p 5000:5000 --name docker-registry -v /data/registry_hub/:/var/lib/registry -v /data/registry_hub/passwd:/auth/htpasswd \ -e …

领域驱动设计(DDD)Spring Boot 3 实现 二

使用 Spring Boot 3 实现领域驱动设计(DDD)是一种很自然的选择,因为 Spring 提供了良好的生态支持,特别是在分层架构、依赖管理、事件驱动等方面。以下是如何在 Spring Boot 3 中结合 DDD 进行开发的详细指南: 项目结构…

FFmpeg 头文件完美翻译之 libavcodec 模块

前言 众所周知,FFmpeg 的代码开发上手难度较高,源于官方提供的文档很少有包含代码教程相关的。要想熟练掌握 FFmpeg 的代码库开发,需要借助它的头文件,FFmpeg 把很多代码库教程都写在头文件里面。因此,熟读头文件的内…

redis实现lamp架构缓存

redis服务器环境下mysql实现lamp架构缓存 ip角色环境192.168.242.49缓存服务器Redis2.2.7192.168.242.50mysql服务器mysql192.168.242.51web端php ***默认已安装好redis,mysql 三台服务器时间同步(非常重要) # 下载ntpdate yum -y install…

flink写parquet解决timestamp时间格式字段问题

背景 Apache Parquet 是一种开源的列式数据文件格式,旨在实现高效的数据存储和检索。它提供高性能压缩和编码方案(encoding schemes)来批量处理复杂数据,并且受到许多编程语言和分析工具的支持。 在我们通过flink写入parquet文件的时候,会遇到timestamp时间格式写入的问题。…

PaddleSeg 从配置文件和模型 URL 自动化运行预测任务

git clone https://github.com/PaddlePaddle/PaddleSeg.git# 在ipynb里面运行 cd PaddleSegimport sys sys.path.append(/home/aistudio/work/PaddleSeg)import os# 配置文件夹路径 folder_path "/home/aistudio/work/PaddleSeg/configs"# 遍历文件夹,寻…