09_Pandas从多个条件(AND,OR,NOT)中提取行

2023-10-28

09_Pandas从多个条件(AND,OR,NOT)中提取行

使用Pandas从多个条件(AND,OR,NOT)中提取行的方法。

有以下2点需要注意:

  • &,|,〜的使用(and、or、not的错误)
  • 使用比较运算符时,请将每个条件括在括号中。

以下数据为例。

import pandas as pd

df = pd.read_csv('./data/09/sample_pandas_normal.csv')
print(df)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

本例是使用pandas.DataFrame,但pandas.Series也同样适用。

如何提取(选择)行

首先,展示如何从pandas.DataFrame中提取(选择)行以获得新的pandas.DataFrame。

使用布尔列表(数组)或pandas.Series,只能提取(选择)True行。

mask = [True, False, True, False, True, False]
df_mask = df[mask]
print(df_mask)
#       name  age state  point
# 0    Alice   24    NY     64
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88

通过AND,OR,NOT多个条件提取(选择)行的代码-示例

具有两个条件值的pandas.Series,可以使用&获得如下结果。在这里,为了便于说明,将==和〜用作二个条件,但是仅使用!=也是可以。

print(df['age'] < 35)
# 0     True
# 1    False
# 2     True
# 3    False
# 4     True
# 5     True
# Name: age, dtype: bool

print(~(df['state'] == 'NY'))
# 0    False
# 1     True
# 2     True
# 3     True
# 4     True
# 5    False
# Name: state, dtype: bool

print((df['age'] < 35) & ~(df['state'] == 'NY'))
# 0    False
# 1    False
# 2     True
# 3    False
# 4     True
# 5    False
# dtype: bool

仅提取(选择)True行。

df_and = df[(df['age'] < 35) & ~(df['state'] == 'NY')]
print(df_and)
#       name  age state  point
# 2  Charlie   18    CA     70
# 4    Ellen   24    CA     88

对于OR也是如此。使用|。

print((df['age'] < 20) | (df['point'] > 90))
# 0    False
# 1     True
# 2     True
# 3    False
# 4    False
# 5    False
# dtype: bool

df_or = df[(df['age'] < 20) | (df['point'] > 90)]
print(df_or)
#       name  age state  point
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70

3个以上条件的运算符的优先级

运算符的优先级是NOT(〜),AND(&),OR(|)。因此,结果因顺序而异。

df_multi_1 = df[(df['age'] < 35) | ~(df['state'] == 'NY') & (df['point'] < 75)]
print(df_multi_1)
#       name  age state  point
# 0    Alice   24    NY     64
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

df_multi_2 = df[(df['age'] < 35) & (df['point'] < 75) | ~(df['state'] == 'NY')]
print(df_multi_2)
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

将每个组括在括号中比较安全。

df_multi_3 = df[((df['age'] < 35) | ~(df['state'] == 'NY')) & (df['point'] < 75)]
print(df_multi_3)
#       name  age state  point
# 0    Alice   24    NY     64
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 5    Frank   30    NY     57
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

09_Pandas从多个条件(AND,OR,NOT)中提取行 的相关文章

随机推荐

  • python爬取软件内数据_各种数据爬取工具爬虫合集整理

    却道天凉好个秋 不用编程敲代码的爬取数据的工具合集 简单上手易用的爬虫脚本工具软件汇总 1 工具软件类 Microsoft Excel excel也可以爬一些规整的表格数据等 没想到吧 八爪鱼 一款可视化免编程的网页采集软件 可以从不同网站
  • osgexp安装与使用

    osg系列文章目录 文章目录 osg系列文章目录 前言 一 下载osgexp和3d max 二 osgexp安装 三 编译OSGExp 参考 前言 3ds max文件导出osg或者ive格式 一 下载osgexp和3d max 1 首先下载
  • 列举ADO.NET在操作数据库时,常用的对象及作用。

    connection 连接对象 用于对数据库的连接操作 参数是连接字符串 command 命令对象 用于执行对数据库的操作 参数是连接字符串或存储过程 也必须传入连接对象实例 SqlDataReader 数据读取对象 用于读取操作 Read
  • 【BP时序预测】基于BP神经网络的时间序列预测附matlab完整代码

    作者简介 热爱科研的Matlab仿真开发者 修心和技术同步精进 matlab项目合作可私信 个人主页 Matlab科研工作室 个人信条 格物致知 内容介绍 基于BP神经网络的时间序列预测是一种常用的预测方法 它可以通过训练神经网络模型来学习
  • Ubuntu 18.04安装RTX2080Ti显卡驱动

    Ubuntu 18 04 2080Ti安装显卡驱动 PPA仓库安装 网上的方法太多了 尝试了几种各种失败 这里记录一种本人电脑有效的方法 有的电脑需要先卸载Ubuntu 自带的驱动 sudo add apt repository ppa g
  • unity 获取鼠标停留处UI

    修改新华社项目 需要为鼠标停留加个标示 暂定为旋转UI 的fillAmount 期间需要获得UI名字 因为名字太多了 个别环影响 所以找到了这个工具方法
  • 如何在你的windows系统电脑里面设置个人私密空间

    1 前几天我在网上搜了一下windows系统的垃圾清理软件看看哪个好用 2 诶 还别说 还真的找到了一个好用的 他就是 完美卸载 最麻烦就是这些杀毒 清理类的软件 所以我下载了个不需要安装的绿色版 3 我要介绍的就是里面的 数据保险箱 界面
  • 利用SCCM进行横向移动

    01SCCM介绍 SCCM全名为System Center Configuration Manager 从版本1910开始 微软官方将其从Microsoft System Center产品移除 重新命名为Microsoft Endpoint
  • 9种基本数据类型

    9种基本数据类型以及封装类 基本类型 大小 默认值 封装类 byte 1 byte 0 Byte short 2 short 0 Short int 4 0 Int Long 8 0L Long float 4 0 0f Float dou
  • 跳过交货单ATP CHECK的方法

    物料启用ATP CHECK会影响到交货 对于那些启用了ATP CHECK而又没有做合理规划的系统 想要搞清楚ATP是如何计算的 我只能说呵呵 你会发现批次拆分 过账的BAPI会有莫名其妙的 报错 搞不清楚库存里明明有东西为什么还不让交货 这
  • 【深度学习】数据集打标签:生成train.txt和val.txt

    当我们在Github上下载一篇论文的代码后 我们如何在自己的数据集上进行复现呢 准备自己的数据集 这是在百度爬的十分类的服装数据集 其中train文件夹下每类大概300张 val文件夹下每类大概100张 总共在4000张左右 设置目录 我们
  • mysql二进制文件下载教程_mysql 二进制文件增量备份

    1 首先在my cnf下添加二进制文件路径 windows下文件名称为my ini 在 mysqld 下添加 log bin mysql bin 2 centos下默认安装mysql 5 6 数据默认文件夹下为 var lib mysql
  • (新手向)在matlab中运用SMOTE和前馈神经网络对wilt(枯萎)数据集进行机器学习

    目录 一 概述 二 数据集描述 三 方法 数据预处理 SMOTE算法 Feed forward网络 四 结果 后记 2021年5月 一 概述 近日 有位同学因为搞不懂matlab中的神经网络来问我怎么做 我说你把数据集发来给我看看 我稍微一
  • apt安装包报错解决办法:下列软件包有未满足的依赖关系,依赖。。。但是。。。正要被安装

    apt安装包报错解决办法 下列软件包有未满足的依赖关系 依赖 但是 正要被安装 文章目录 apt安装包报错解决办法 下列软件包有未满足的依赖关系 依赖 但是 正要被安装 几种可能的情况 1 镜像源版本代码的问题 1 查看版本代码 2 修改镜
  • Redis设计与实现---Sentinel

    Sentinel Redis的高可用性解决方案 由一个或多个Sentinel实例组成的系统可以监视任意多个主服务器 以及这些主服务器属下的所有从服务器 并在被监视的主服务器进入下线状态时 自动将下线主服务器属下的某个从服务器升级为新的主服务
  • 考研复试数据库原理课后习题(十)——数据库恢复技术

    数据库恢复技术 1 事务是用户定义的一个数据库操作序列 这些操作要么全做 要么不做 是一个不可分隔的工作单位 事务具有四个特性 ACID 原子性 一致性 隔离性 持续性 原子性 事务是数据库的逻辑工作单位 一个事务中包括的操作要么全做 要么
  • Swagger的常用配置

    一 可在项目中创建SwaggerConfig配置类 对文档详细信息进行配置 swagger配置类 用于配置swagger的详细信息 比如标题 网站 邮箱 Configuration public class SwaggerConfig 返回
  • linux 大量的TIME_WAIT解决办法

    原文地址 http www cnblogs com softidea p 6062147 html 统计在一台前端机上高峰时间TCP连接的情况 统计命令 netstat n awk tcp S NF END for a in S print
  • 计算机科学想象作文500,六年级想象作文600字

    第一篇 描写月亮的作文 你们听说过 超级月亮 吗 什么 没听说过 那么 我就带你们去看看前几天的超级月亮吧 今天 我像往常一样去广场滑滑板 忽然 我看一栋楼房的左 作文500字 未来的城市一场暴雨过后 阳光洒在充满绿意的城市 街道上没有积水
  • 09_Pandas从多个条件(AND,OR,NOT)中提取行

    09 Pandas从多个条件 AND OR NOT 中提取行 使用Pandas从多个条件 AND OR NOT 中提取行的方法 有以下2点需要注意 的使用 and or not的错误 使用比较运算符时 请将每个条件括在括号中 以下数据为例