对 pandas 数据框进行子集化的最佳方法[关闭]

2024-01-18

嘿,我是 Pandas 新手,我刚刚遇到df.query().

为什么人们会使用df.query()什么时候可以使用括号表示法直接过滤数据框? pandas 官方教程似乎也更喜欢后一种方法。

带括号表示法:

df[df['age'] <= 21]

使用 pandas 查询方法:

df.query('age <= 21')

除了已经提到的一些风格或灵活性差异之外,是否有一个规范的首选 - 即大型数据帧上的操作性能?


考虑以下示例 DF:

In [307]: df
Out[307]:
  sex  age     name
0   M   40      Max
1   F   35     Anna
2   M   29      Joe
3   F   18    Maria
4   F   23  Natalie

有很多充分的理由选择.query() method.

  • 与布尔索引相比,它可能更短、更清晰:

    In [308]: df.query("20 <= age <= 30 and sex=='F'")
    Out[308]:
      sex  age     name
    4   F   23  Natalie
    
    In [309]: df[(df['age']>=20) & (df['age']<=30) & (df['sex']=='F')]
    Out[309]:
      sex  age     name
    4   F   23  Natalie
    
  • 您可以通过编程方式准备条件(查询):

    In [315]: conditions = {'name':'Joe', 'sex':'M'}
    
    In [316]: q = ' and '.join(['{}=="{}"'.format(k,v) for k,v in conditions.items()])
    
    In [317]: q
    Out[317]: 'name=="Joe" and sex=="M"'
    
    In [318]: df.query(q)
    Out[318]:
      sex  age name
    2   M   29  Joe
    

PS也有一些缺点:

  • 我们不能使用.query()包含空格的列或仅由数字组成的列的方法
  • 并非所有功能都可以应用,或者在某些情况下我们必须使用engine='python'而不是默认的engine='numexpr'(更快)

注:Jeff(Pandas 主要贡献者之一,Pandas 核心团队成员)曾经有人说 https://github.com/pandas-dev/pandas/issues/6508#issuecomment-283181667:

请注意,实际上 .query 只是一个很好的接口 它有非常具体的保证,这意味着它的解析方式就像 查询语言,而不是完全通用的接口。

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

对 pandas 数据框进行子集化的最佳方法[关闭] 的相关文章

随机推荐

  • 如何在张量流中实现多元线性随机梯度下降算法?

    我从单变量线性梯度下降的简单实现开始 但不知道将其扩展到多元随机梯度下降算法 单变量线性回归 import tensorflow as tf import numpy as np create random data x data np r
  • 我什么时候应该在 scanf() 中使用 & 符号

    在c中使用 符号时使用的规则是什么scanf struct Student char name 20 int id int main void struct Student std1 printf enter name and id of
  • 查看 Azure KeyVault 中 Secret 的内容

    这似乎是一个非常基本的问题 但我在 Azure 中创建了一个 KeyVault 并向其中添加了两个 Secret 它们是使用以下方法保护的纯文本 hello world 示例ConvertTo SecureString Using Get
  • gdb 'x' 命令有什么作用?

    在我寻求更多地了解计算机的一般知识时 我偶然发现了一本书 其中有一些关于反汇编 x86 汇编语言以及 C 和 x86 汇编之间的关系的章节 现在我一直在读这个GDB命令 但我无法完全理解它 该命令及其结果如下 gdb x 32xw esp
  • 分类:类内数据倾斜

    我正在尝试构建一个多标签分类器来预测某些输入数据为 0 或 1 的概率 我正在使用神经网络和 Tensorflow Keras 稍后可能是 CNN 问题如下 数据存在很大偏差 负面例子比正面例子多得多 大概是90 10 所以我的神经网络几乎
  • 使用 swift Codable 从 JSON 数组中提取数据

    我有一个像这样的 JSON 响应 我目前设计的可解码结构如下 struct PortfolioResponseModel Decodable var dataset Dataset struct Dataset Decodable var
  • C 原型范围

    我了解到 声明的类型说明符 参数列表中的标识符 函数原型中的声明 不是函数定义的一部分 标识符具有函数原型 范围 终止于 函数声明符 请参阅下面提到的C 程序 void fn struct st int a a struct st b st
  • 将排除与 Django 字段集一起使用

    我正在尝试为模型编写一个动态表单 允许具有不同权限的用户执行不同的操作 我希望下面的代码能够正常运行 以便非超级用户无法编辑 商家 块中的任何字段 class CategoryModelAdmin LWModelAdmin fieldset
  • Azure 应用服务已启动并正在运行,但显示默认的 Microsoft 页面

    我在 Microsoft Azure 上部署机器学习模型时遇到问题 将我的 github 存储库链接到 azure 后 它显示模型已成功部署 但是 当我单击创建的应用程序的网址时 它只显示 您的应用程序服务已启动并正在运行 是时候采取下一步
  • C# 无法加载 DLL

    如何在c 项目中加载dll error 无法加载 DLL Reader dll 无法加载指定的模块 成立 HRESULT 异常 0x8007007E 代码示例 DllImport Reader dll public static exter
  • Vim:删除光标周围的空行

    假设我正在编辑以下文档 光标 Lions Tigers Kittens Puppies Humans 我可以使用什么顺序删除周围的空白 以便留下 Lions Tigers Kittens Puppies Humans 注意 我正在寻找一个可
  • 用于发送电子邮件的正确 HTTP 动词

    对于仅让服务器发送电子邮件而不改变整个 Web 应用程序状态的请求 正确的 http 动词是什么 我正在开发一个 Rails 项目 我需要以某种方式定义路线 Rails application routes draw do get self
  • PyQt5 制作子类小部件

    所以我想知道如何制作小部件的子类 例如 如果我想创建一个小部件 它继承了 QtWidgets QPushButton 的方法和属性 但是我会在此基础上创建额外的方法和属性 class Coord QtWidgets QPushButton
  • java模块可以调用c模块吗?

    只是出于兴趣 是否可以从 java 模块调用 C 模块 如果是这样 该怎么办 是的 你可以使用Java 本机接口 http java sun com j2se 1 3 docs guide jni 去做这个
  • PL/SQL:是否有完全停止脚本执行的指令?

    我试图在 PL SQL 脚本的开头对数据库模式进行一些检查 如果检查给出不成功的结果 我想停止脚本 以防止执行下一条指令 我有这样的东西 1st line of PL SQL script DECLARE SOME COUNT INTEGE
  • 为什么算术运算符的参数类型默认为 int?

    我是 F 新手 我惊讶地发现f x y x y实际上是int gt int gt int 显然 https stackoverflow com questions 501069 functions with generic paramete
  • Delphi:“TObject 数组”类型参数上的 SetLength()

    我正在尝试调整作为参数传递的某个类的数组的大小 例如 procedure Resize MyArray Array of TObject begin SetLength MyArray 100 end 但是 这会引发错误 E2008 不兼容
  • 如何阻止异步 tcp .NET 代码耗尽整个系统的资源

    在我的一些异步 TCP 服务器代码中 偶尔会发生错误 导致进程消耗整个系统的内存 在查看日志 事件查看器和一些MS docs http support microsoft com kb 947862如果 调用应用程序多次对同一客户端进行异步
  • 设置 TCP/IP 客户端和服务器通过网络进行通信

    我正在尝试学习一些有关套接字编程的知识 并且偶然发现了 TcpListener 和 TcpClient 来使用 因为我读到它们对于初学者来说稍微容易一些 我想要完成的基本要点是拥有一个可以在我的笔记本电脑和同一网络上的另一台笔记本电脑上运行
  • 对 pandas 数据框进行子集化的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 嘿 我是 Pandas 新手 我刚刚遇到df query 为什么人们会使用df query 什么时候可以使用括号表示法直接过滤数据框 panda