简单的查询其实根本不能满足实际开发的需求

需求可能是让你查一下2018年的销售额啊,2019年温度超过30℃的天数啊等等的

这些需求都是有异曲同工的,就是带条件的查询

这里我们先自己设计一个表格,并将其读取出来

import pandas as pd

df = pd.read_excel('test1.xlsx')
print(df)
         data wendu_min wendu_max weather  fengji
0 2020-01-01 1℃ 15℃ 晴 1
1 2020-01-02 1℃ 16℃ 多云 2
2 2020-01-03 1℃ 17℃ 小雨 4
3 2020-01-04 4℃ 18℃ 阴 2
4 2020-01-05 1℃ 19℃ 大雨 1
5 2020-01-06 3℃ 20℃ 小雨 3
6 2020-01-07 1℃ 21℃ 晴 5
7 2020-01-08 1℃ 22℃ 多云 2
8 2020-01-09 1℃ 23℃ 阴 1
9 2020-01-10 0℃ 24℃ 小雨 3
10 2020-01-11 2℃ 25℃ 多云 4

为了查询方便,所以我将日期当做查询的索引

df.set_index('data', inplace=True)

这个inplace是指修改可以及时看到

           wendu_min wendu_max weather  fengji
data
2020-01-01 1℃ 15℃ 晴 1
2020-01-02 1℃ 16℃ 多云 2
2020-01-03 1℃ 17℃ 小雨 4
2020-01-04 4℃ 18℃ 阴 2
2020-01-05 1℃ 19℃ 大雨 1
2020-01-06 3℃ 20℃ 小雨 3
2020-01-07 1℃ 21℃ 晴 5
2020-01-08 1℃ 22℃ 多云 2
2020-01-09 1℃ 23℃ 阴 1
2020-01-10 0℃ 24℃ 小雨 3
2020-01-11 2℃ 25℃ 多云 4

像这种温度带着的℃,不便于数据的分析,所以我们在刚开始的时候,可以将其去掉

df['wendu_min'] = df['wendu_min'].str.replace('℃', '').astype('int32')
df['wendu_max'] = df['wendu_max'].str.replace('℃', '').astype('int32')
            wendu_min  wendu_max weather  fengji
data
2020-01-01 1 15 晴 1
2020-01-02 1 16 多云 2
2020-01-03 1 17 小雨 4
2020-01-04 4 18 阴 2
2020-01-05 1 19 大雨 1
2020-01-06 3 20 小雨 3
2020-01-07 1 21 晴 5
2020-01-08 1 22 多云 2
2020-01-09 1 23 阴 1
2020-01-10 0 24 小雨 3
2020-01-11 2 25 多云 4

数据都处理完毕,现在就开始进行查询

查询单个数据

我想查一月9号的最高温度

df.loc['2020-01-09', 'wendu_max']
23

先传行索引,再传列索引

查询多个数据

我想查一月6号到一月10号之间的所有数据

df.loc['2020-01-06':'2020-01-10', :]
            wendu_min  wendu_max weather  fengji
data
2020-01-06 3 20 小雨 3
2020-01-07 1 21 晴 5
2020-01-08 1 22 多云 2
2020-01-09 1 23 阴 1
2020-01-10 0 24 小雨 3

:代表着所有的数据

使用条件查询

我想得到最低温度大于1℃的数据

df.loc[df['wendu_min'] > 1, :]
            wendu_min  wendu_max weather  fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3
2020-01-11 2 25 多云 4

我想要最低温度大于1℃,最高温度小于25℃的天气

df.loc[(df['wendu_min'] > 1) & (df['wendu_max'] < 25), :]
            wendu_min  wendu_max weather  fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3

多个条件要用括号括起来,然后用&连接

使用函数查询

使用lambda表达式

如果lambda不太熟练就跳过这里

df.loc[lambda df: (df['wendu_min'] > 1) & (df['wendu_max'] < 25), :]
            wendu_min  wendu_max weather  fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3

自己编写的函数查询

我认为最低温度大于1℃,最高温度小于25℃的就是好天气,所以先写一个函数

def goodWeather(df):
return (df['wendu_min'] > 1) & (df['wendu_max'] < 25)

然后再使用这个函数进行数据查询

df.loc[goodWeather, :]
            wendu_min  wendu_max weather  fengji
data
2020-01-04 4 18 阴 2
2020-01-06 3 20 小雨 3

注意这里放的是函数名,而不是函数名()

4.pandas的进阶查询的更多相关文章

  1. pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

    pandas DataFrame的增删查改总结系列文章: pandas DaFrame的创建方法 pandas DataFrame的查询方法 pandas DataFrame行或列的删除方法 pand ...

  2. Django orm进阶查询(聚合、分组、F查询、Q查询)、常见字段、查询优化及事务操作

    Django orm进阶查询(聚合.分组.F查询.Q查询).常见字段.查询优化及事务操作 聚合查询 记住用到关键字aggregate然后还有几个常用的聚合函数就好了 from django.db.mo ...

  3. 【PY从0到1】 一文掌握Pandas量化进阶

    # 一文掌握Pandas量化进阶 # 这节课学习Pandas更深的内容. # 导入库: import numpy as np import pandas as pd # 制作DataFrame np. ...

  4. Django笔记&教程 5-2 进阶查询——Queryset

    Django 自学笔记兼学习教程第5章第2节--进阶查询--Queryset 点击查看教程总目录 Queryset相关内容其实蛮多的,本文只介绍一些常用的,详细的推荐查询官方文档:queryset-a ...

  5. django进阶-查询(适合GET4以上人群阅读)

    前言: 下篇博客写关于bootstrap... 一.如何在脚本测试django from django.db import models class Blog(models.Model): name ...

  6. MySQL 【进阶查询】

    数据类型介绍 整型 tinyint, # 占1字节,有符号:-128~127,无符号位:0~255 smallint, # 占2字节,有符号:-32768~32767,无符号位:0~65535 med ...

  7. 3.pandas的简单查询

    知道了基本的pandas的数据结构,就可以进行查询相应的数据了 DataFrame可以看成是一个个的Series组成的一个二维结构,既然如此,就会有从DataFrame里查询Series的方法 从Da ...

  8. python的Web框架,Django模型系统二,模型属性,及数据库进阶查询

    原始数据接上篇文章来操作.可能需要查看后才能懂.点击这里查看 1.常用的模型字段类型 官方文档:https://docs.djangoproject.com/en/2.1/ref/models/fie ...

  9. mysql 进阶查询(学习笔记)

    学习笔记,来源:实验楼 ,链接: https://www.shiyanlou.com/courses/9   一.日期计算: 1.要想确定每个宠物有多大,可以使用函数TIMESTAMPDIFF()计算 ...

随机推荐

  1. 学习Java的Day04

    知识点 接口: 1.接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 2. 接口中只允许出现抽象方法,不能出现非抽象方法 3. 接口的源文件也是java文件,编译后的文件也是. ...

  2. 手摸手带你理解Vue的Watch原理

    前言 watch 是由用户定义的数据监听,当监听的属性发生改变就会触发回调,这项配置在业务中是很常用.在面试时,也是必问知识点,一般会用作和 computed 进行比较. 那么本文就来带大家从源码理解 ...

  3. nginx使用热部署添加新模块

    简介 当初次编译安装nginx时,http_ssl_module 模块默认是不编译进nginx的二进制文件当中,如果需要添加 ssl 证书.也就是使用 https协议.那么则需要添加 http_ssl ...

  4. 如何针对Thymeleaf模板抽取公共页面

    对于公共页面(导航栏nav.页头head.页尾footer)的抽取有三种方式:        1)基于iframe进行抽取,这种方式很有效,但比较老了,另外为了页面的自适应性,还得做不少工作:     ...

  5. 「疫期集训day0」启程

    看了看几乎所有学长都是写的博客,所以写的博客 由于是第一回集训,考得都是老题(虽然有些还不会) 感受1:我调试好蒻呃,调试巨蒻,T1lis模板5分切,结果T2T3T4调了将近了两个小时,先是T2路径输 ...

  6. Shein一面(视频面)07.07

    应聘职位:Java工程师 时长:30min 面经: Spring讲一下 SpringAOP用到什么设计模式 JVM包括什么 运行时数据区包括什么 什么时候入栈,出栈 Sychronized和可重入锁区 ...

  7. postman 进阶技巧

    cookie 清除缓存 code 生成接口自动化测试脚本 响应部分 pretty 响应以json或xml显示 raw 响应以文本显示 preview 以HTML网页行驶显示 断言 断言:用于判断接口请 ...

  8. NPOI升级版本问题

    最近做了一个导出Word的功能,需要样式与排版果断选择了NPOI,本以为支持Excel很好,支持Word应该也不会错吧,万万没想到还是挣扎了小一星期. 我的项目是一个13年项目,NPOI版本还很旧,我 ...

  9. WPF基于.Net Core

    WPF基于.Net Core 因为最近.net core的热门,所以想实现一下.net core框架下的WPF项目,还是MVVM模式,下面就开始吧,简单做一个计算器吧. 使用VS2019作为开发工具 ...

  10. scala 数据结构(二):数组

    1 数组-定长数组(声明泛型) 第一种方式定义数组 这里的数组等同于Java中的数组,中括号的类型就是数组的类型 val arr1 = new Array[Int](10) //赋值,集合元素采用小括 ...