关于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

总结

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

相关文章

  • 利用OpenCV给彩色图像添加椒盐噪声的方法

    利用OpenCV给彩色图像添加椒盐噪声的方法

    椒盐噪声是数字图像中的常见噪声,一般是图像传感器、传输信道及解码处理等产生的黑白相间的亮暗点噪声,椒盐噪声常由图像切割产生,这篇文章主要给大家介绍了关于利用OpenCV给彩色图像添加椒盐噪声的相关资料,需要的朋友可以参考下
    2021-10-10
  • Anaconda 查看、创建、管理和使用python环境的方法

    Anaconda 查看、创建、管理和使用python环境的方法

    这篇文章主要介绍了Anaconda 查看、创建、管理和使用python环境的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Flask框架学习笔记之消息提示与异常处理操作详解

    Flask框架学习笔记之消息提示与异常处理操作详解

    这篇文章主要介绍了Flask框架学习笔记之消息提示与异常处理操作,结合实例形式分析了flask框架表单登陆消息提示、错误模板调用及异常处理相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • python调用java的jar包方法

    python调用java的jar包方法

    今天小编就为大家分享一篇python调用java的jar包方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python中如何使用正则表达式提取数据

    python中如何使用正则表达式提取数据

    这篇文章主要介绍了python中如何使用正则表达式提取数据问题。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • python实现字符串逆序输出的几种方法

    python实现字符串逆序输出的几种方法

    本文介绍了四种在Python中实现字符串逆序输出的方法,每种方法都有其优缺点,下面就来介绍一下如何使用,感兴趣的可以了解一下
    2024-12-12
  • Python3.5文件读与写操作经典实例详解

    Python3.5文件读与写操作经典实例详解

    这篇文章主要介绍了Python3.5文件读与写操作,结合实例形式详细分析了Python针对文件的读写操作常用技巧与相关操作注意事项,需要的朋友可以参考下
    2019-05-05
  • Python实用技巧之临时文件的妙用

    Python实用技巧之临时文件的妙用

    当我们用Python编写程序时,有时候需要临时存储数据且不希望占用多少内存,这些情况下以创建临时文件的方式进行处理,既不会干扰本地文件系统,又安全省事。本文主要介绍了临时文件的一些妙用,希望大家能够喜欢
    2023-02-02
  • 如何基于python操作excel并获取内容

    如何基于python操作excel并获取内容

    这篇文章主要介绍了如何基于python操作excel并获取内容,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 分享8点超级有用的Python编程建议(推荐)

    分享8点超级有用的Python编程建议(推荐)

    这篇文章主要介绍了分享8点超级有用的Python编程建议(推荐),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-10-10

最新评论