在 Pandas query() 中使用字符串方法:数据帧过滤

2023-10-24

The Pandas 中的 query() 方法允许您过滤数据帧,并且当与字符串方法结合使用时,可能性变得广泛。

在本教程中,您将学习如何在query()功能来细化和过滤数据。

 

 

检查子字符串:str.contains()

The str.contains()方法检查字符串中是否存在子字符串并返回布尔系列。

让我们深入研究一个例子:


import pandas as pd
data = {
    'Names': ['Alice Cooper', 'BOB', 'charlie', '123Dylan', 'Elle45', 'FRANK ', '  Georgia  ', 'Henry-White', 'isabelle99', 'J123ack', '  karen  ', 'LOL123'],
    'Codes': ['A1B2', 'XYZ', 'zyx998', '1234', 'W5W5', '   ', 'AB.CD', '99.99', 'HELLO', 'world', 'space  ', '123.45']
}
df = pd.DataFrame(data)
result = df.query('Names.str.contains("Dylan")')
print(result)
  

Output:


      Names  Codes
3  123Dylan  1234
  

当使用query()方法结合str.contains(),我们有效地过滤掉了包含子字符串“Dylan”的行。

 

str.startswith() 和 str.endswith()

您可以使用str.startswith() and str.endswith()方法根据 DataFrame 中的某些字符串是否以特定子字符串开头或结尾来过滤行。

Using str.startswith()

您可以使用str.startswith()如果要过滤字符串以特定子字符串开头的行,请使用以下方法:


# Filtering names that start with 'ch'
result_startswith = df.query('Names.str.startswith("ch")')
print(result_startswith)
  

Output:


     Names  Codes
2  charlie  zyx998
  

在此代码中,您要搜索以“ch”开头的名称。结果,“charlie”被返回。

Using str.endswith()

您可以使用str.endswith()如果要过滤字符串以特定子字符串结尾的行,请使用以下方法:


# Filtering codes that end with '5'
result_endswith = df.query('Codes.str.endswith("5")')
print(result_endswith)
  

Output:


         Names   Codes
4        Elle45   W5W5
11       LOL123  123.45
  

在这里,我们得到代码以“5”结尾的行。

 

检查大写:str.isupper()

The str.isupper()方法允许您检查特定字符串是否完全大写。


# Filtering rows where 'Names' is entirely in uppercase
result_uppercase = df.query('Names.str.isupper()')
print(result_uppercase[['Names']])
  

Output:


   Names
1   BOB
5  FRANK 
11  LOL123
  

根据给定的代码,目标是过滤“Names”列完全由大写字符组成的行。

输出显示了“BOB”、“FRANK”和“LOL123”等条目——所有这些都是完全大写的。

 

检查小写:str.islower()

The str.islower()检查特定字符串是否完全小写:


# Filtering rows where 'Names' is entirely in lowercase
result_lowercase = df.query('Names.str.islower()')
print(result_lowercase[['Names']])
  

Output:


        Names
2     charlie
8  isabelle99
10     karen  
  

输出突出显示“charlie”、“isabelle99”和“karen”等条目 - 所有这些都是小写的。

 

检查数字字符

The str.isnumeric() and str.isdigit().methods 允许您检查字符串是否包含纯数字字符。

这两种方法都用于识别仅由数字组成的字符串,但它们的行为存在细微差别,特别是在考虑 Unicode 字符时。

Using str.isnumeric()

此方法检查字符串中的所有字符是否都是数字字符并且字符串不为空:


import pandas as pd
df = pd.DataFrame({
    'data': ['12345', '½', 'abcd', '123a']
})

# Query with str.isnumeric()
print(df.query("`data`.str.isnumeric()"))
  

Output:


    data
0  12345
1      ½
  

Using str.isdigit()

The str.isnumeric(),方法检查字符串中的所有字符是否都是数字并且字符串不为空:


# Query with str.isdigit()
print(df.query("`data`.str.isdigit()"))
  

Output:


    data
0  12345
  

正如我们所看到的,str.isnumeric()将“12345”和“½”识别为包含数字字符,而str.isdigit()仅将“12345”识别为包含数字字符。

请注意在列名称周围使用反引号 (“),当列名称与函数名称冲突或包含空格或特殊字符时需要使用反引号 (“)。

 

检查字母数字:str.isalnum()

The str.isalnum()Pandas 中的方法允许您检查字符串是否由字母数字字符(字母和数字)组成,不包含任何空格或特殊字符。


# Filtering rows where 'Names' contains only alphanumeric characters
result_alnum = df.query('Names.str.isalnum()')
print(result_alnum[['Names']])
  

Output:


         Names
1          BOB
2      charlie
3     123Dylan
4       Elle45
8   isabelle99
9      J123ack
11      LOL123
  

从执行的代码中,您可以观察到我们正在尝试过滤“名称”​​列仅由字母数字字符组成的行。

 

检查小数:str.isdecimal()

The str.isdecimal()检查字符串是否包含 Unicode 十进制类别中的字符,该类别本质上包括整数,但不包括浮点数或任何其他数字表示形式。


# Filtering rows where 'Names' is purely decimal
result_decimal = df.query('Codes.str.isdecimal()')
print(result_decimal[['Codes']])
  

Output:


  Codes
3  1234
  

从上面的代码中,我们过滤了“代码”列完全由十进制字符组成的行。在我们的示例数据中,唯一的输出是“1234”。

 

检查空格:str.isspace()

识别完全由空格组成的字符串对于数据清理和验证过程至关重要。

此类字符串通常可能是数据输入错误、导入未对齐或占位符值造成的。使用str.isspace()Pandas 中的方法,您可以毫不费力地检测这些仅包含空格的字符串。

让我们用示例 DataFrame 来说明它的用法:


# Filtering rows where 'Names' is entirely whitespace
result_whitespace = df.query('Codes.str.isspace()')
print(result_whitespace[['Names']])
  

Output:


    Names
5  FRANK  
  

从上面的代码中,我们过滤了“Codes”列仅包含空格的行。

然后我们打印该代码的名称“FRANK”。

 

检查标题大小写:str.istitle()

标题大小写(每个单词的第一个字母大写)是名称、标题或标题的常见格式。

您可以使用str.istitle()方法来检查遵循此模式的字符串:


# Filtering rows where 'Names' is in titlecase
result_titlecase = df.query('Names.str.istitle()')
print(result_titlecase[['Names']])
  

Output:


          Names
0  Alice Cooper
3      123Dylan
4        Elle45
6     Georgia  
7   Henry-White
  

从执行的代码中,我们过滤“名称”​​列遵循标题大小写格式的行。

输出突出显示“Alice Cooper”和“Henry-White”。尽管“Henry-White”包含连字符,但每个分段单词都以大写字母开头,这与标题结构对齐。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Pandas query() 中使用字符串方法:数据帧过滤 的相关文章

  • 理解Python中的元类和继承[重复]

    这个问题在这里已经有答案了 我对元类有一些困惑 具有继承性 class AttributeInitType object def init self kwargs for name value in kwargs items setattr
  • 缺少 python 配置

    我正在安装一个程序 需要安装 python config 唯一的问题是我目前没有 python config 而且我似乎不知道如何获取它 经过搜索后 我应该可以通过以下方式安装它 yum install python devel 然而 这样
  • 数据操作 startdate enddate python pandas

    我有一个促销描述数据集 其中包含有关正在运行的各种促销活动及其开始日期 结束日期的信息 promo item start date end date Buy1 get 1 A 2015 01 08 2015 01 12 Buy1 get 1
  • 是否可以将名为“None”的值添加到枚举类型?

    我可以将名为 None 的值添加到枚举中吗 例如 from enum import Enum class Color Enum None 0 represent no color at all red 1 green 2 blue 3 co
  • 日期/时间值的 Django URL 转换器

    我正在尝试使用 Django 内置的 URL 转换器将 URL 中的日期时间字符串转换为视图中的日期对象 如果我手动输入 URL 它们会按预期工作 但尝试为其生成 URL 时找不到匹配项 我的转换器很简单 from django utils
  • Django/gevent socket.IO 与 redis pubsub。我把东西放在哪里?

    我有一个独立的 python 脚本 它只是从 Twitter 的流 API 捕获数据 然后在收到每条消息时 使用 redis pubsub 将其发布到频道 tweets 这是该脚本 def main username username pa
  • 可视化时间序列时标记特定日期

    我有一个包含几年数据的时间序列 例如 ts pd Series np random randn 1000 index pd date range 1 1 2000 periods 1000 ts ts cumsum ts plot 我还有两
  • 映射器无法组装任何主键列

    我从 sqlite 表创建了一个临时表 该表是基于各种选择标准的原始表的子集 屏幕截图中有一个示例 我试图一次循环一个表记录 以便更新每个记录中的字段 我有 source table self source engine create en
  • 可重用的 Tensorflow 卷积网络

    我想重用来自Tensorflow 专业人士的 MNIST CNN 示例 http www tensorflow org tutorials mnist pros index md 我的图像尺寸为 388px X 191px 只有 2 个输出
  • 如何将 Jinja 与 Twisted 一起使用?

    我正在计划使用 Python 与 Twisted Storm 和 Jinja 一起开发一个讨论软件 问题是 Jinja 不是为 Twisted 或异步套接字库而设计的 并且使用 Twisted 提供的性能是我不打算使用 Flask 的原因
  • “分页文件太小,无法完成此操作”尝试训练 YOLOv5 对象检测模型时出错

    我有大约 50000 个图像和注释文件用于训练 YOLOv5 对象检测模型 我在另一台计算机上仅使用 CPU 训练模型没有问题 但需要太长时间 因此我需要 GPU 训练 我的问题是 当我尝试使用 GPU 进行训练时 我不断收到此错误 OSE
  • 在 Python 中将 int 转换为 ASCII 并返回

    我正在为我的网站制作一个 URL 缩短器 我当前的计划 我愿意接受建议 是使用节点 ID 来生成缩短的 URL 因此 理论上 节点 26 可能是short com z 节点 1 可能是short com a 节点 52 可能是short c
  • 如何从 Selenium 获取元素的属性

    我正在 Python 中使用 Selenium 我想得到 val of a
  • 计算素数并附加到列表

    我最近开始尝试使用 python 解决 Euler 项目的问题 并且在尝试计算素数并将其附加到列表中时遇到了这个障碍 我编写了以下代码 但我很困惑为什么它在运行时不输出任何内容 import math primes def isPrime
  • NumPy 数组不可 JSON 序列化

    创建 NumPy 数组并将其保存为 Django 上下文变量后 加载网页时收到以下错误 array 0 239 479 717 952 1192 1432 1667 dtype int64 is not JSON serializable
  • 如何克服 numpy.unique 的 MemoryError

    我正在使用 Numpy 版本 1 11 1 并且必须处理一个二维数组 my arr shape 25000 25000 所有值都是整数 我需要一个唯一的数组值列表 使用时lst np unique my arr 我正进入 状态 Traceb
  • 使用 boto3 将 csv 文件保存到 s3

    我正在尝试写入 CSV 文件并将其保存到 s3 中的特定文件夹 存在 这是我的代码 from io import BytesIO import pandas as pd import boto3 s3 boto3 resource s3 d
  • 如何在特定时间启动Tornado周期性回调?

    目前在我的 Tornado 应用程序中 我正在使用定期调用回调PeriodicCallback每隔一小时 像这样 import tornado ioloop from tornado ioloop import PeriodicCallba
  • 继承自 NumPy 数组的类如何更改其自身的值?

    我有一个继承自 NumPy n 维数组的简单类 我想要该类的两个方法可以更改该类实例的数组值 其中一种方法应将类实例的数组设置为类实例的列表数据属性的值 另一种方法应将一些列表值附加到类实例的数组中 我不确定如何实现这一点 但我的尝试如下
  • 张量流多元线性回归不收敛

    我正在尝试使用张量流训练具有正则化的多元线性回归模型 由于某种原因 我无法获取以下代码的训练部分来计算我想要用于梯度下降更新的误差 我在设置图表时做错了什么吗 def normalize data matrix averages np av

随机推荐

  • 如何更改 PHP 会话超时

    作为 Web 开发人员 了解 PHP 会话超时对于构建安全可靠的 Web 应用程序至关重要 PHP 会话是一种跨多个页面存储用户信息的方式 会话超时是指会话在过期之前保持活动状态的持续时间 在本分步指南中 我们将引导您完成更改 PHP 会话
  • 如何在 Ubuntu、Debian 和 LinuxMint 上安装 Python 3.7

    在撰写本文时 Python 3 7 系列的最新稳定版本已可供安装 本文将帮助您在 Ubuntu 和 LinuxMint 操作系统上安装 Python 3 7 9 你可以拜访here阅读有关 Python 版本的更多信息 先决条件 保持软件包
  • 如何在 Ubuntu 16.04、14.04 上安装 Nginx、PHP 7 和 MySQL

    PHP 7 2 的最新主要版本已经发布 在速度和安全性方面进行了大量优化 所以你应该尝试这个版本来进行开发 本教程将帮助您在 Ubuntu 17 10 16 04 和 14 04 LTS 版本上安装 Nginx PHP 7 2 和 MySQ
  • 了解 Terraform 语法和配置文件

    Terraform 由 HashiCorp 开发 是一款因其在基础设施即代码 IaC 方面的强大功能而广为人知的工具 本综合指南旨在让您深入了解 Terraform 语法 特别关注配置文件 了解 Terraform 语法 Terraform
  • Fedora 26 发布,新功能及升级步骤

    Fedora 26 发布 最终的 Fedora 26 已发布于2017 年 7 月 11 日 Fedora 26有各种软件升级 安全补丁 该版本将与 GENOME 3 24 一起发布 您可以从以下位置下载 Fedora 26 预发行版 Be
  • 如何重命名 SQL Server 数据库

    Microsoft SQL Server 为您提供了多种重命名数据库的方法 您可以使用 SQL Server Management Studio 或运行 SQL 查询来重命名数据库 在重命名数据库之前 请记住 它可能会中断使用当前数据库名称
  • 如何使用SCP命令安全传输文件

    SCP 安全复制 是一个命令行实用程序 允许您在两个位置之间安全地复制文件和目录 With scp 您可以复制文件或目录 从本地系统到远程系统 从远程系统到本地系统 在本地系统的两个远程系统之间 当传输数据时scp 文件和密码都经过加密 因
  • 如何在 CentOS 7 上安装 VMware Workstation Player

    VMware是一个成熟稳定的虚拟化解决方案 允许您在一台机器上运行多个独立的操作系统 您可以创建自己的虚拟机并评估许多软件供应商作为虚拟设备分发的软件 这些软件可从VMware 解决方案交流 本教程将指导您完成在 CentOS 7 上安装
  • 如何在 Ubuntu 18.04 上安装 Java

    Java 是世界上最流行的编程语言之一 用于构建不同类型的跨平台应用程序 本教程介绍如何在 Ubuntu 18 04 上安装各种版本的 OpenJDK 以及 Oracle Java 相同的说明适用于 Ubuntu 16 04 和任何基于 U
  • 如何在 Ubuntu 18.04 上安装 Apache Cassandra

    Apache Cassandra 是一个免费的开源 NoSQL 数据库 不存在单点故障 它提供线性可扩展性和高可用性 而不会影响性能 Apache Cassandra 被许多组织使用 包括 Apple NetFlix eBay 和 Easo
  • Linux 中的超时命令

    timeout是一个命令行实用程序 它运行指定的命令 并在给定时间段后终止该命令 如果该命令仍在运行 换句话说 timeout允许您运行有时间限制的命令 这timeout命令是 GNU 核心实用程序包的一部分 几乎所有 Linux 发行版上
  • 如何在 CentOS 7 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 在大多数情况下 当在虚拟机上运行 CentOS 时 不存在交换
  • 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机

    在本教程中 我们将提供有关如何在 Ubuntu 18 04 上设置 Apache 虚拟主机的分步说明 Apache 虚拟主机允许您在一台计算机上运行多个网站 使用虚拟主机 您可以指定站点文档根目录 包含网站文件的目录 为每个站点创建单独的安
  • 如何在 Ubuntu 20.04 上安装和配置 VNC

    虚拟网络计算 VNC 是一种图形桌面共享系统 允许您使用键盘和鼠标远程控制另一台计算机 它是 Microsoft 的开源替代品远程桌面协议 RDP 本文介绍如何在 Ubuntu 20 04 上安装和配置 VNC 服务器 我们还将向您展示如何
  • 如何在 Ubuntu 18.04 上禁用防火墙

    Ubuntu 附带了一个名为 UFW 简单防火墙 的防火墙配置工具 UFW 是一个用户友好的前端 用于管理 iptables 防火墙规则 其主要目标是使管理防火墙规则更容易 或者顾名思义 不复杂 强烈建议保持防火墙启用 但是 在某些情况下
  • 如何在 Debian 9 上安装 Jenkins

    Jenkins是一个开源自动化服务器 提供了一种设置持续集成和持续交付 CI CD 管道的简单方法 持续集成 CI 是一种 DevOps 实践 团队成员定期将代码更改提交到版本控制存储库 然后运行自动化构建和测试 持续交付 CD 是自动构建
  • 如何在 Debian 10 上配置 MySQL (MariaDB) 主从复制

    MySQL 复制是将数据从一台数据库服务器 主服务器 复制到一台或多台服务器 从服务器 的过程 MySQL 支持多种复制拓扑 其中主 从拓扑是最著名的拓扑之一 其中一台数据库服务器充当主服务器 而一台或多台服务器充当从服务器 默认情况下 复
  • 如何在 Ubuntu 18.04 上安装 Ghost

    Ghost 是一个构建在 Node js 平台之上的现代源代码发布平台 它完全可定制且易于使用 使您可以以几乎零的学习曲线发布内容 在本教程中 我们将向您展示如何使用 Nginx 作为代理 免费的 Let s Encrypt SSL 证书
  • 使用 NumPy 范数计算向量和矩阵范数

    在线性代数中 范数是为向量空间中的每个向量分配严格正的长度或大小的函数 它是矢量大小的度量 从数学上来说 对于一个向量x the p 范数定义为 x p sum xi p 1 p 在本教程中 我们将使用numpy linalg norm f
  • 在 Pandas query() 中使用字符串方法:数据帧过滤

    The Pandas 中的 query 方法允许您过滤数据帧 并且当与字符串方法结合使用时 可能性变得广泛 在本教程中 您将学习如何在query 功能来细化和过滤数据 目录 hide 1 检查子字符串 str contains 2 str