当前位置:首页 > 谈天说地

Pandas使用query()优雅的查询实例

34资源网2022-01-24529
目录
  • 常规用法
  • 多条件查询
  • 引用变量
  • 索引选取
    • 多索引选取
  • 特殊字符

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

    常规用法

    先创建一个 dataframe。

    import pandas as pd
    
    df = 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列 的所有行。先看两种常见写法。

    >>> df[df['a'].isin(df['b'])]
       a  b  c   d  e.e
    0  e  f  0  10   10
    1  d  b  2   8    9
    2  c  c  4   6    8
    3  b  d  6   4    7
    >>> df.loc[df['a'].isin(df['b'])]
       a  b  c   d  e.e
    0  e  f  0  10   10
    1  d  b  2   8    9
    2  c  c  4   6    8
    3  b  d  6   4    7

    下面使用 query() 来实现。

    >>> df.query("a in b")
       a  b  c   d  e.e
    0  e  f  0  10   10
    1  d  b  2   8    9
    2  c  c  4   6    8
    3  b  d  6   4    7

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

    多条件查询

    选取 a列字母出现在b列,并且c列小于d列 的所有行。

    >>> df.query('a in b and c < d')
       a  b  c   d  e.e
    0  e  f  0  10   10
    1  d  b  2   8    9
    2  c  c  4   6    8

    这里 and 也可以用 & 表示。

    引用变量

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

    >>> number = 5
    >>> df.query('a in b & c > @number')
       a  b  c  d  e.e
    3  b  d  6  4    7

    索引选取

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

    >>> df.query('a in b and index > 2')
       a  b  c  d  e.e
    3  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  b
    color  rank      
    yellow 0     0  1
           1     2  3
           2     4  5
    red    3     6  7
           4     8  9

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

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

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

    >>> df.index.names = [none, none]
    >>> df.query("ilevel_0 == 'red'")
           a  b
    red 3  6  7
        4  8  9
    >>> df.query("ilevel_1 == '4'")
           a  b
    red 4  8  9

    特殊字符

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

    >>> df.query('a == b | (c + 2 > `e.e`)')
       a  b  c  d  e.e
    2  c  c  4  6    8
    3  b  d  6  4    7
    4  a  e  8  2    6

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

    到此这篇关于pandas使用query()优雅的查询实例的文章就介绍到这了,更多相关pandas query()查询内容请搜索萬仟网以前的文章或继续浏览下面的相关文章希望大家以后多多支持萬仟网!

    看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

    快手极速版二维码

    快手极速版新人见面礼

    除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

    邀请两个好友奖最高196元,如下图所示:

    快手极速版邀请好友奖励

    扫描二维码推送至手机访问。

    版权声明:本文由34楼发布,如需转载请注明出处。

    本文链接:https://www.34l.com/post/6241.html

    分享给朋友:

    相关文章

    哪家的云主机好(国内五大云主机服务商)

    哪家的云主机好(国内五大云主机服务商)

    导言:博睿数据(股票代码688229)十余年专注APM领域,已为超过2000余家大型企业提供专业数据服务。依托先进的测评技术及丰富的行业经验,博睿宏远倾力打造了一个公开透明的性能测评栏目——【Bonree指数】。该栏目致力于呈现各行业的整体…

    视频号怎么开通微信小商店技巧流程方法分享

    视频号怎么开通微信小商店技巧流程方法分享

    这两年直播的风口一直高居不下,微信终于也跟上了直播热潮,视频号直播新增购物车功能,已经开通了小商店的视频号,可以在直播中上架小商店商品,直播过程可以展示并售卖商品。视频号直播带货无疑让更多创作者加入其中,同时也意味着视频号功能的进一步完善,…

    华为p40pro参数配置(p40与p40pro参数对比)

    华为p40pro参数配置(p40与p40pro参数对比)

    据网友反馈,华为 P40/Pro 系列开始推送鸿蒙 HarmonyOS2.0.0.1 66 (C00E160R3P6),大小 1.26 GB。 IT之家获悉,本次更新相机将新增多机位拍摄模式,通过变换机位拍摄,获得镜头更丰富的精彩视频和照…

    带货主播成正式工种;AITO汽车来了;小米、英特尔入股张艺谋等创办的VR公司 ;特斯拉推出儿童电动车丨邦早报

    带货主播成正式工种;AITO汽车来了;小米、英特尔入股张艺谋等创办的VR公司 ;特斯拉推出儿童电动车丨邦早报

    【电子驾驶证12月10日起全国全面推行】据公安部消息,12月10日起,电子驾驶证在全国全面推行。此前,驾驶证电子化已覆盖北京、上海、广州、西安等200个城市,5000多万名驾驶人领取了电子驾驶证,实现手机在线“亮证”。电子驾驶证通过全国“交…

    现在农村做什么暴利比较好(农村适合的创业项目推荐)

    现在农村做什么暴利比较好(农村适合的创业项目推荐)

    在农村农民买东西的主要途径是农村赶集,这时候很多人会批发了东西来到农村集上去卖,这属小本暴利行业,可以赚不少钱。那么,农村赶集摆摊什么暴利?赶集卖什么利润大?下面一起来了解一下。 在农村赶集也是有不少工具可以售卖的,无外乎想要销量好的最好…

    视频号灰度测试购物车功能,微信要扛起腾讯电商大旗了?

    视频号灰度测试购物车功能,微信要扛起腾讯电商大旗了?

    图源:摄图网 编者按:本文来自微信公众号小谦笔记(ID:xiaoqianshuo),创业邦经授权转载 据自媒体百准报道,除了直播,微信视频号目前正在灰度测试短视频购物车功能,这被视为微信加码电商业务的一大跨步。 早在2014年,腾讯就在微信…