文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pandas查询数据df.query的使用

2024-04-02 19:55

关注

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

df = pd.read_csv("beijing_tianqi_2018.csv")
df.head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02018-01-013℃-6℃晴~多云东北风1-2级592
12018-01-022℃-5℃阴~多云东北风1-2级491
22018-01-032℃-5℃多云北风1-2级281
32018-01-040℃-8℃东北风1-2级281
42018-01-053℃-6℃多云~晴西北风1-2级501
# 替换掉温度的后缀℃
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()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
222018-01-23-4-12西北风3-4级311
232018-01-24-4-11西南风1-2级341
242018-01-25-3-11多云东北风1-2级271
3592018-12-26-2-11晴~多云东北风2级261
3602018-12-27-5-12多云~晴西北风3级481

复杂条件查询

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

## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
df[
    (df["bWendu"]<=30) 
    & (df["yWendu"]>=15) 
    & (df["tianqi"]=='晴') 
    & (df["aqiLevel"]==1)]
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
2352018-08-243020北风1-2级401
2492018-09-072716西北风3-4级221

使用df.query可以简化查询

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

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

形如:

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)
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
02018-01-013-6晴~多云东北风1-2级592
12018-01-022-5阴~多云东北风1-2级491
22018-01-032-5多云北风1-2级281

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

## 查询最高温度小于30度,并且最低温度大于15度,并且是晴天,并且天气为优的数据
df.query("bWendu<=30 & yWendu>=15 & tianqi=='晴' & aqiLevel==1")
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
2352018-08-243020北风1-2级401
2492018-09-072716西北风3-4级221

查询温差大于15度的日子

df.query("bWendu-yWendu >= 15").head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
682018-03-1014-2东南风1-2级171中度污染4
822018-03-24225西南风1-2级119轻度污染3
832018-03-25247南风1-2级782
842018-03-26257多云西南风1-2级151中度污染4
852018-03-272711南风1-2级243重度污染5

可以使用外部的变量

# 查询温度在这两个温度之间的数据
high_temperature = 15
low_temperature = 13
df.query("yWendu<=@high_temperature & yWendu>=@low_temperature").head()
 ymdbWenduyWendutianqifengxiangfengliaqiaqiInfoaqiLevel
1072018-04-182714多云~晴西南风3-4级147轻度污染3
1082018-04-192613多云东南风4-5级170中度污染4
1092018-04-202814多云~小雨南风4-5级164中度污染4
1162018-04-272513西南风3-4级112轻度污染3
1192018-04-302414多云南风3-4级622

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯