Pandas查询数据df.query的使用

  • 更新时间:2022-10-17 09:16:29
  • 编辑:徐安福

方法对比:
使用df[(df[“a”] > 3) & (df[“b”]<5)]的方式;
使用df.query(“a>3 & b<5”)的方式;

df = pd.read_csv("beijing_tianqi_2018.csv")
df.head()
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2018-01-01 3℃ -6℃ 晴~多云 东北风 1-2级 59 2
1 2018-01-02 2℃ -5℃ 阴~多云 东北风 1-2级 49 1
2 2018-01-03 2℃ -5℃ 多云 北风 1-2级 28 1
3 2018-01-04 0℃ -8℃ 东北风 1-2级 28 1
4 2018-01-05 3℃ -6℃ 多云~晴 西北风 1-2级 50 1
# 替换掉温度的后缀℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')

使用dataframe条件表达式查询

最低温度低于-10度的列表

df[df["yWendu"] < -10].head()
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
22 2018-01-23 -4 -12 西北风 3-4级 31 1
23 2018-01-24 -4 -11 西南风 1-2级 34 1
24 2018-01-25 -3 -11 多云 东北风 1-2级 27 1
359 2018-12-26 -2 -11 晴~多云 东北风 2级 26 1
360 2018-12-27 -5 -12 多云~晴 西北风 3级 48 1

复杂条件查询

注意,组合条件用&符号合并,每个条件判断都得带括号

## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
df[
    (df["bWendu"]<=30) 
    & (df["yWendu"]>=15) 
    & (df["tianqi"]=='晴') 
    & (df["aqiLevel"]==1)]
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
235 2018-08-24 30 20 北风 1-2级 40 1
249 2018-09-07 27 16 西北风 3-4级 22 1

使用df.query可以简化查询

形式:DataFrame.query(expr, inplace=False, **kwargs)

其中expr为要返回boolean结果的字符串表达式

形如:

  • df.query(‘a<100’)
  • df.query(‘a < b & b < c’),或者df.query(’(a<b)&(b<c)’)

df.query可支持的表达式语法:

  • 逻辑操作符: &, |, ~
  • 比较操作符: <, <=, ==, !=, >=, >
  • 单变量操作符: -
  • 多变量操作符: +, -, *, /, %

df.query中可以使用@var的方式传入外部变量

df.query支持的语法来自NumExpr,地址:
https://numexpr.readthedocs.io/projects/NumExpr3/en/latest/index.html

查询最低温度低于-10度的列表

df.query("yWendu < 3").head(3)
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
0 2018-01-01 3 -6 晴~多云 东北风 1-2级 59 2
1 2018-01-02 2 -5 阴~多云 东北风 1-2级 49 1
2 2018-01-03 2 -5 多云 北风 1-2级 28 1

查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据

## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
df.query("bWendu<=30 & yWendu>=15 & tianqi=='晴' & aqiLevel==1")
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
235 2018-08-24 30 20 北风 1-2级 40 1
249 2018-09-07 27 16 西北风 3-4级 22 1

查询温差大于15度的日子

df.query("bWendu-yWendu >= 15").head()
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
68 2018-03-10 14 -2 东南风 1-2级 171 中度污染 4
82 2018-03-24 22 5 西南风 1-2级 119 轻度污染 3
83 2018-03-25 24 7 南风 1-2级 78 2
84 2018-03-26 25 7 多云 西南风 1-2级 151 中度污染 4
85 2018-03-27 27 11 南风 1-2级 243 重度污染 5

可以使用外部的变量

# 查询温度在这两个温度之间的数据
high_temperature = 15
low_temperature = 13
df.query("yWendu<=@high_temperature & yWendu>=@low_temperature").head()
  ymd bWendu yWendu tianqi fengxiang fengli aqi aqiInfo aqiLevel
107 2018-04-18 27 14 多云~晴 西南风 3-4级 147 轻度污染 3
108 2018-04-19 26 13 多云 东南风 4-5级 170 中度污染 4
109 2018-04-20 28 14 多云~小雨 南风 4-5级 164 中度污染 4
116 2018-04-27 25 13 西南风 3-4级 112 轻度污染 3
119 2018-04-30 24 14 多云 南风 3-4级 62 2

 到此这篇关于Pandas查询数据df.query的使用的文章就介绍到这了,更多相关Pandas查询数据df.query 内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!

相关教程

  • Pandas过滤dataframe中包含特定字符串数据的方法整理

    今天小编就为大家分享一篇Pandas过滤dataframe中包含特定字符串的数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2019-06-13

  • python:pandas合并csv文件的实例内容

    下面小编就为大家分享一篇python:pandas合并csv文件的方法(图书数据集成),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-02-04

  • Python Pandas数据结构知识点总结

    这篇文章主要介绍了Python Pandas数据结构简单介绍的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    发布时间:2020-04-29

  • python3 pandas 如何读取MySQL数据和插入

    下面为大家分享一篇python3 pandas 读取MySQL数据和插入的实例,具有很好的参考价值,希望对大家有所帮助。一起过来看看吧

    发布时间:2020-02-19

  • pandas赋值失败问题解决

    这篇文章主要介绍了详解pandas赋值失败问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2021-05-24

  • pandas中MultiIndex和对象实际索引不一致解决方法

    这篇文章主要介绍了详解pandas中MultiIndex和对象实际索引不一致问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习

    发布时间:2019-11-18

  • python numpy和pandas中数组的合并、拉直和重塑代码分享

    今天小编就为大家分享一篇numpy和pandas中数组的合并、拉直和重塑实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2020-01-12

  • python pandas写入excel文件的方法示例

    给网友朋友们带来一篇关于pandas的教程,这篇文章主要介绍了python pandas写入excel文件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2022-06-15

  • 对pandas中时间窗函数rolling的实例讲解

    今天小编就为大家分享一篇对pandas中时间窗函数rolling的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    发布时间:2021-04-27

用户留言