一文了解Python中如何使用query()进行优雅的查询

本篇文章带大家聊聊一个python pandas库的使用小技巧,介绍一下使用query()优雅查询的方法,希望对大家有所帮助!

一文了解Python中如何使用query()进行优雅的查询

对于 Pandas 根据条件获取指定数据,相信大家都能够轻松的写出相应代码,但是如果你还没用过 query,相信你会被它的简洁所折服!

常规用法

先创建一个 DataFrame。

import pandas as pddf = pd.DataFrame(    {'A': ['e', 'd', 'c', 'b', 'a'],     'B': ['f', 'b', 'c', 'd', 'e'],     'C': range(0, 10, 2),     'D': range(10, 0, -2),     'E.E': range(10, 5, -1)})

登录后复制

我们现在选取 A列字母出现在B列 的所有行。先看两种常见写法。

立即学习“Python免费学习笔记(深入)”;

>>> df[df['A'].isin(df['B'])]   A  B  C   D  E.E0  e  f  0  10   101  d  b  2   8    92  c  c  4   6    83  b  d  6   4    7>>> df.loc[df['A'].isin(df['B'])]   A  B  C   D  E.E0  e  f  0  10   101  d  b  2   8    92  c  c  4   6    83  b  d  6   4    7

登录后复制

下面使用 query() 来实现。

>>> df.query("A in B")   A  B  C   D  E.E0  e  f  0  10   101  d  b  2   8    92  c  c  4   6    83  b  d  6   4    7

登录后复制

可以看到使用 query 后的代码简洁易懂,并且它对于内存的消耗也更小。

多条件查询

选取 A列字母出现在B列,并且C列小于D列 的所有行。

>>> df.query('A in B and C 

这里 and 也可以用 & 表示。

引用变量

表达式中也可以使用外部定义的变量,在变量名前用@标明。

>>> number = 5>>> df.query('A in B & C > @number')   A  B  C  D  E.E3  b  d  6  4    7

登录后复制

索引选取

选取 A列字母出现在B列,并且索引大于2 的所有行。

>>> df.query('A in B and index > 2')   A  B  C  D  E.E3  b  d  6  4    7

登录后复制

多索引选取

创建一个两层索引的 DataFrame。

>>> import numpy as np>>> colors = ['yellow']*3 + ['red']*2>>> rank = [str(i) for i in range(5)]>>> index = pd.MultiIndex.from_arrays([colors, rank], names=['color', 'rank'])>>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=['A', 'B'] , index=index)>>> df = pd.DataFrame(np.arange(10).reshape(5, 2),columns=['A', 'B'] , index=index)>>> df             A  Bcolor  rank      yellow 0     0  1       1     2  3       2     4  5red    3     6  7       4     8  9

登录后复制

1、当有多层索引有名称时,通过索引名称直接选取。

>>> df.query("color == 'red'")            A  Bcolor rank      red   3     6  7      4     8  9

登录后复制

2、当有多层索引无名时,通过索引级别来选取。

>>> df.index.names = [None, None]>>> df.query("ilevel_0 == 'red'")       A  Bred 3  6  7    4  8  9>>> df.query("ilevel_1 == '4'")       A  Bred 4  8  9

登录后复制

特殊字符

对于列名中间有空格或运算符等其他特殊符号,需要使用反引号 ``。

>>> df.query('A == B | (C + 2 > `E.E`)')   A  B  C  D  E.E2  c  c  4  6    83  b  d  6  4    74  a  e  8  2    6

登录后复制

总的来说,query() 用法比较简单,可以快速上手,代码可读性也提高了不少。

【相关推荐:Python3视频教程 】

以上就是一文了解Python中如何使用query()进行优雅的查询的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2245314.html

(0)
上一篇 2025年2月26日 21:46:20
下一篇 2025年2月18日 08:01:56

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 分享10个有趣且实用的Python模块,看看他们的功能吧!

    python程序有有许多有助于高效编程的模块和第三方包,了解这些模块的正确使用方法是很重要的,下面本篇文章就来给大家总结分享10个有趣且实用的python模块,一起看看他们的功能吧! 闲话少说,我们直接开始吧。 :) 1.Python伪信息…

    2025年2月26日 编程技术
    200
  • python实现用经纬度点坐标读取DEM中的高程信息(实例详解)

    本篇文章给大家带来了关于怎样用10行代码实现经纬度点坐标读取DEM中的高程信息的相关问题,主要的思路就是使用GDAL读取DEM数据,获取第一波段,并读取为数组,然后金句经纬度计算行列号,利用行列号读取高程信息,希望对大家有帮助。 推荐学习:…

    2025年2月26日 编程技术
    200
  • 简单剖析一下Python的format的用法

    本篇文章给大家带来了python的相关知识,其中主要介绍了format的用法,fotmat作为python的的格式字符串函数,主要通过字符串中的花括号{},来识别替换字段,从而完成字符串的格式化,希望对大家有帮助。   推荐学习:pytho…

    2025年2月26日
    200
  • Python学习之解析Flask运行原理(图文详解)

    本篇文章给大家带来了关于python的相关知识,其中主要介绍了flask的运行原理相关问题,对flask的运行原理做一简要解析,以增强对flask的了解,希望对大家有帮助。  推荐学习:python学习教程   所有的 Python Web…

    2025年2月26日 编程技术
    200
  • 带你一起解读Python多线程

    本篇文章给大家带来了关于python的相关知识,其中主要介绍了关于多线程的相关知识,多线程类似于同时执行多个不同的程序,有很多的优点,下面我们就来看一下,希望对大家有帮助。  推荐学习:python教程 线程讲解   多线程类似于同时执行多…

    2025年2月26日 编程技术
    200
  • 一起来分析Python函数式编程

    本篇文章给大家带来了关于python的相关知识,其中主要介绍了函数式编程的相关问题,也就是在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务,希望对大家有帮助。  推荐学习:python学习教程 在这篇文章里,你将学会什么是函…

    2025年2月26日 编程技术
    200
  • Python数据异常值检测和处理(实例详解)

    本篇文章给大家带来了关于python的相关知识,其中主要介绍了数据分析中异常值的相关问题,一般异常值的检测方法有基于统计的方法,基于聚类的方法,以及一些专门检测异常值的方法等,下面对这些方法进行相关的介绍,希望对大家有帮助。  推荐学习:p…

    2025年2月26日 编程技术
    200
  • 归纳整理!Python实用技巧总结

    本篇文章给大家带来了关于python的相关知识,其中主要总结了24个非常实用的python开发技巧,包括了all or any、bashplotlib、collections等等,希望对大家有帮助。 推荐学习:python教程 在Pytho…

    2025年2月26日
    200
  • 经典技巧之Python案例详解

    本篇文章给大家带来了关于python的相关知识,其中主要总结介绍了一些经典案例,希望大家都能够学会,能够给大家带来帮助。 推荐学习:python教程 今天给大家搜集了几道Python的经典案例,希望各位都能学会! 一、猜数字 立即学习“Py…

    2025年2月26日 编程技术
    200
  • python列表和元组详解(实例详解)

    本篇文章给大家带来了关于python的相关知识,其中主要介绍了列表和元组的相关问题,可以使用灵活的列表(list)和元组(tuple),来进行数据储存,下面我们先简单了解下列表和元组的基本使用,希望对大家有帮助。 推荐学习:python学习…

    2025年2月26日
    200

发表回复

登录后才能评论