Pandas 常用按照查询条件筛选数据

news2025/1/19 20:27:20

文章目录

    • 1. 筛选指定的列
    • 2. 按照条件筛选
      • 3.1 单条件筛选
      • 3.2 多条件组合筛选

创建一个DataFrame

import pandas as pd
data = {'name':['张三', '李四', '王五', '赵六'],'age':[20, 21, 22, 23], 'gender': [0, 1, 1, 1], 'stature': [165, 189, 178, 160], 'year': [2000, 2002, 2003, 1993]}
df = pd.DataFrame(data)
print (df)

运行结果如下:

  name  age  gender  stature  year
0   张三   20       0      165  2000
1   李四   21       1      189  2002
2   王五   22       1      178  2003
3   赵六   23       1      160  1993

常用的筛选方法:

  • []:直接在DataFrame的[]中写筛选条件或者组合条件,组合条件之间可以使用逻辑符号& |
  • loc/ilocloc按照标签值(列名和行索引取值)访问,iloc按照数字索引访问,均支持单值访问或切片查询,除此之外,loc还可以指定返回的列变量
  • isin:当查询条件不是一个取值范围,而是一些具体的值,就需要使用isin了,也可以做取反操作,在筛选条件前加~
  • str.contains:实现字符串的模糊筛选,类似sql语句中的like
  • where:接受的条件需要是布尔型,如果不满足条件,会被赋值为默认的NaN或者指定其他值
  • query:所有的筛选条件要在' '之内
  • filter:不筛选具体数据,而是筛选特定的行或列
  • any:如果至少有一个值为True,结果便是True。一般需要和其他操作配合使用,比如查看每列的空值情况
  • all:需要所有的值都为True,结果才为True

1. 筛选指定的列

筛选name

# 1. 直接筛选,返回的是Series类型
df['name']

# 2. 使用loc筛选,返回的是DataFrame类型
df.loc[:, ['name']]

# 3. 使用filter,返回的是DataFrame类型
df.filter(items=['name'])

查询结果如下:
在这里插入图片描述

筛选namestature

# 1. 直接筛选
df[['name', 'stature']]

# 2. 使用loc筛选
df.loc[:, ['name', 'stature']]

# 3. 使用filter
df.filter(items=['name', 'stature'])

查询结果如下:
在这里插入图片描述

2. 按照条件筛选

3.1 单条件筛选

筛选姓名为王五的所有行

# 1. 直接筛选
df[df['name']=='王五']

# 2. 使用loc筛选
df.loc[df['name']=='王五']

# 3. 使用query查询,注意条件里有''时,两边要用""包住。
df.query("name=='王五'")

查询结果如下:
在这里插入图片描述

3.2 多条件组合筛选

筛选gender为1,并且姓名为王五的所有行

# 1. 直接筛选
df[(df['name']=='王五') & (df['gender']==1)]

# 2. 使用loc筛选
df.loc[(df['name']=='王五') & (df['gender']==1)]

# 3. 使用query查询,注意条件里有''时,两边要用""包住。
df.query("name=='王五' & gender==1")

查询结果如下:
在这里插入图片描述
筛选gender为1,并且姓名为王五赵六的所有行

# 1. 直接筛选
df[(df['name']=='王五') | (df['name']=='赵六') & (df['gender']==1)]

# 2. 使用loc筛选
df.loc[(df['name']=='王五') | (df['name']=='赵六') & (df['gender']==1)]

# 3. 使用query查询,注意条件里有''时,两边要用""包住。
df.query("name=='王五' | name=='赵六' & gender==1")

# 4. 使用isin()筛选
df[df['name'].isin(['王五', '赵六']) & (df['gender']==1)]

在这里插入图片描述
筛选name中包含的所有行

# 使用str.contains来筛选
df[df['name'].str.contains('王')]

查询结果如下:

在这里插入图片描述
筛选name中包含的所有行

# 使用str.contains来筛选
df[df['name'].str.contains('王|赵')]

查询结果如下:

在这里插入图片描述
查看每列的空值情况:

# 1. 查看每列是否有空值
df.isnull().any(axis=0)

'''
name       False
age        False
gender     False
stature    False
year       False
dtype: bool
'''

# 2. 查看含有空值的行数
df.isnull().any(axis=1).sum()
# 0

如上按照条件筛选基本可以满足日常开发需要,pandas中条件筛选比较灵活,还有很多情况没有演示,大家可以自行组合各种筛选条件进行尝试。

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

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

相关文章

Servlet教程

在JavaEE平台上,处理TCP连接,解析HTTP协议这些底层工作统统扔给现成的Web服务器去做,我们只需要把自己的应用程序跑在Web服务器上。为了实现这一目的,JavaEE提供了Servlet API,我们使用Servlet API编写自己的Servlet来…

JavaWeb开发 —— 前端工程化

目录 一、前后端分离开发 二、YApi 三、前端工程化 1. 环境准备:vue-cli 2. Vue项目创建 四、Vue项目开发流程 一、前后端分离开发 ① 最早的前端开发就是实现页面,顶多再写写JS让页面可以有交互的特效。属于前后端未分离的时代。 早期前后端混合开…

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

无疑使用单点登录 (SSO)访问组织中的多种应用程序能够提升用户体验 。 如果您负责为 Amazon Redshift 启用 SSO,则可以使用 ADFS、PingIdentity、Okta、Azure AD 或其他基于 SAML 浏览器的身份提供程序设置 SSO 身份验证。 这篇文章向您展示了如何将 PingOne 设置为…

js中 = 等号赋值的问题,Js中对象的引用问题,深浅拷贝

js "" 赋值符号 在js中 “”对于基本数据类型是赋值符号,比较( 或 )的时候是值;对于引用数据类型-对象来说 是地址引用,比较的时候是比较的地址。 基本数据类型和引用数据类型的比较 let a 3; let b a;c…

Go是一门面向对象编程语言吗

本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"! 作者:tonybai|慕课网讲师 Go语言已经开源13年了,在近期TIOBE发布的2023年3月份的编程语言排行榜中,…

Go面向对象

前言 Go也有面向对象 面向对象引入: 用面向对象好啊 结构体定义 GO中的结构体和其他语言中的class是同一个等级的 这个就懒得写了 , 直接贴一个 内存分析 当实例化一个结构体的时候,分配一份内存空间. 结构体实例的创建 package main import "fmt" type Te…

计组第一章——计算机组成的基本认识

计算机——> 数值计算——> 处理电信号——> 基本单元(逻辑元件) 电子管——> 晶体管——>中小规模集成电路 ——>大规模,超大规模集成电路 机器字长:计算机一次整数运算所能处理的二进制位数 解析存储器中的程…

Vue——组件 v-model

目录 ​ v-model 的参数​ 多个 v-model 绑定​ 处理 v-model 修饰符​ v-model 可以在组件上使用以实现双向绑定。 首先让我们回忆一下 v-model 在原生元素上的用法&#xff1a; <input v-model"searchText" />在代码背后&#xff0c;模板编译器会对 v-…

工程日记的感悟

我个人很喜欢工程日记&#xff0c;好像一片自己一亩三分地一样&#xff0c;自己想弄些啥&#xff0c;就弄些啥。 人需要这份自由&#xff0c;需要这份能动性&#xff0c;因为人是创造者。 在《从小工到专家》的书中所要求的条目之中&#xff0c;有一条&#xff0c;就是工程日志…

最详细的Ubuntu服务器搭建Stable-Diffusion教程(无显卡,仅用CPU)

1. 首先安装基本工具 # 安装python环境 sudo apt install wget git若已经安装过请忽略 2. 安装miniconda&#xff08;也可以自己下载python&#xff09; 下载最新的安装包 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh执行安装 ./Minicon…

NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们涵盖以下秘籍&#xff1a; 探索气压探索日常气压范围研究年度气压平均值分析最大可见度用自回归模型预测气压使用移动平均模型预测气压研究年…

HTML svg 之<path>使用

<path> 元素用于定义一个路径。 一、命令 下面的命令可用于路径数据&#xff1a; 命令字母示意描述(小写表示相对于上个坐标的位移,相对路径)M(m) x ymoveto移动到(x,y)L(l) x ylineto画一条直线到(x,y)H(h) xhorizontal lineto水平画一条直线到 Xv(v) yvertical linet…

CVE漏洞复现-CVE-2022-22965-Spring-RCE漏洞

CVE-2022-22965-Spring-RCE漏洞 漏洞概况与影响 Spring framework 是Spring 里面的一个基础开源框架&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日&#xff0c;VMware Tanzu发布漏洞报告&#xff0c;Spring Framework存在远程代码执行漏洞…

JAVAWeb05-Tomcat

1. Tomcat 1.1 概述 1.1.1 官方文档 地址: https://tomcat.apache.org/tomcat-8.0-doc/ 1.1.2 WEB 开发介绍 WEB&#xff0c;在英语中 web 表示网/网络资源(页面,图片,css,js)意思&#xff0c;它用于表示 WEB 服务器(主机)供浏览器访问的资源WEB 服务器(主机)上供外界访问…

终于见识到 Python 的天花板。。

Python 有很多衍生方向&#xff0c;比如 web 开发、网络爬虫、数据分析、数据挖掘、机器学习、人工智能等等&#xff0c;就业范围是很广的&#xff0c;Python 相较于别的编程语言对小白入门还是很友好的&#xff0c; Python 入门推荐这份学习资料&#xff1a;PYTHON全案例实践…

【基础知识】PCB布局设计入门步骤

准备是成功的基石&#xff0c;在PCB设计中也是如此。改进和增长将伴随经验&#xff0c;首先做好准备能够充分利用经验获得成功。为了帮助你做好准备&#xff0c;下面分享一些基本的PCB布局设计步骤。 从良好的原材料入手是您PCB布局设计的第一步 无论打算执行什么任务&#xff…

Vue3——一文入门Vue3

Vue3的优势 1. 性能的提升 打包大小减少41% 初次渲染快55%&#xff0c;更新渲染快133% 内存减少54% … 2. 源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking … 3. 拥抱TypeScript Vue3可以更好的支持TypeScript 4. 新的特性 1.C…

Java 进阶(2) Collection集合

集合的概念 概念&#xff1a;集合是java中提供的⼀种容器&#xff0c;可以⽤来存储多个数据。 数组&#xff1a;存储⼀组相同数据类型的数据结构。 局限&#xff1a;定长 集合&#xff1a;动态存放多个对象。 动态&#xff1a;集合的⼤⼩随着存储的数据量⽽改变。 多个&…

python界面开发案例:制作一个计算器软件

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 在我们手机上大家都有一个计算器&#xff0c;对吧 那它这功能是怎么实现的呢&#xff1f; 今天我们在电脑上来实现一个电脑端计算器界面~ 开发环境&#xff1a; Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器 本文所有…

leedcode刷题(5)

各位朋友们&#xff0c;大家好&#xff0c;今天是我leedcode刷题的第五篇&#xff0c;我们一起来看看吧。 文章目录栈的压入&#xff0c;弹出序列题目要求用例输入提示做题思路代码实现C语言代码实现Java代码实现最小栈题目要求用例输入提示做题思路代码实现Java代码实现栈的压…