关于dataframe.query()筛选tips

 更新时间:2024年09月10日 14:45:22   作者:domodo2012  
在Pandas中,通过布尔索引或.query()方法可以实现对DataFrame中数据的筛选。例如,筛选特定列符合条件的行数据或排除某些类型值。此外,.query()方法还支持使用外部变量进行筛选。这些操作对数据处理非常有用,可以高效地进行数据清洗和预处理

1、常规操作

要从一个 dataframe 中,筛选出某些列值符合要求的行数据,

可以用类似以下的语句实现:

df[df[col] == x]

也可以用 .query() 实现:

df.query('col == x')

2、其他操作方法

1)筛选出 col 列中值不是 bool 类型的行

df.query('col not in (True, False)')

2)筛选出 col 列中值为 nan、None 的值

df = pd.DataFrame({"value": [3,4,9,10,11,np.nan,12]})

# 方法1
# 利用 'nan 不等于自身' 的性质,筛选出非 nan、None 的行
df.query('value == value')

# 方法2
# 类似的还有 isnull, notnull,isnan 等
df.query('value.notna()', engine='python')

# 方法3
df.query('value != 'NaN'")

以上结果都是

Out[28]: 
   value
0    3.0
1    4.0
2    9.0
3   10.0
4   11.0
6   12.0

# 筛选出不是 NaT 的行(提前使用外部函数,超纲了哈)
df.query('col not in [@pd.NaT]')

3)在 query 中筛选时引用外部变量

# 1. 外部为普通变量
# 方法1
pi = 3.1415
df.query('value < 10 and value > @pi')

# 方法2
pi = 3.1415
df.query(f'value < 10 and value > {pi}')

# 2.外部变量为 list
cond = [4, 12]
df.query('@cond[0] < value < @cond[1]')

# 3.外部变量为 dict,注意中括号中不能有引号,因此要取 dict 的值,需要用 dict.get() 的方式
cond = {'dn_band': 4, 'up_band': 12}
df.query("@cond.get('dn_band') < value < @cond.get('up_band')")

# 4.外部为函数
num = [2, 6] 
def func(x):
	return x * 2
df.query('@func(@num[0]) < value < @func(@num[1])')

以上的结果都是

Out[30]: 
   value
3   10.0
4   11.0

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Flask框架编写文件下载接口过程讲解

    Flask框架编写文件下载接口过程讲解

    这篇文章主要介绍了Flask框架编写文件下载接口的过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • python中的Pytorch建模流程汇总

    python中的Pytorch建模流程汇总

    这篇文章主要介绍了python中的Pytorch建模流程汇总,主要帮大家帮助大家梳理神经网络训练的架构,具有一的的参考价值,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-03-03
  • python用装饰器自动注册Tornado路由详解

    python用装饰器自动注册Tornado路由详解

    这篇文章主要给大家介绍了python用装饰器自动注册Tornado路由,文中给出了三个版本的解决方法,有需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • pyqt 实现在Widgets中显示图片和文字的方法

    pyqt 实现在Widgets中显示图片和文字的方法

    今天小编就为大家分享一篇pyqt 实现在Widgets中显示图片和文字的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • django框架配置swagger以及自定义参数使用方式

    django框架配置swagger以及自定义参数使用方式

    这篇文章主要介绍了django框架配置swagger以及自定义参数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Python输出列表(list)的倒序/逆序的几种方法

    Python输出列表(list)的倒序/逆序的几种方法

    列表是一个有序的元素集合,而列表的倒序或逆序操作也是常见的需求之一,本文主要介绍了Python输出列表(list)的倒序/逆序的几种方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • python第三方库visdom的使用入门教程

    python第三方库visdom的使用入门教程

    Visdom:一个灵活的可视化工具,可用来对于 实时,富数据的 创建,组织和共享,本文主要介绍了python第三方库visdom的使用入门教程,分享给大家,感兴趣的可以了解一下
    2021-05-05
  • Python打印scrapy蜘蛛抓取树结构的方法

    Python打印scrapy蜘蛛抓取树结构的方法

    这篇文章主要介绍了Python打印scrapy蜘蛛抓取树结构的方法,实例分析了打印scrapy蜘蛛抓取树结构的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 关于Python3爬虫利器Appium的安装步骤

    关于Python3爬虫利器Appium的安装步骤

    在本篇文章里小编给大家整理的是一篇关于Python3爬虫利器Appium的安装步骤,需要的朋友们可以跟着参考下。
    2020-07-07
  • PyCharm2025中设置conda的多个Python版本的方法实践

    PyCharm2025中设置conda的多个Python版本的方法实践

    本文介绍了在PyCharm 2025.1.1版本中使用Anaconda管理多个Python版本的经验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-10-10

最新评论