網(wǎng)站首頁 編程語言 正文
方法對比:
使用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℃ | 晴~多云 | 東北風(fēng) | 1-2級 | 59 | 良 | 2 |
1 | 2018-01-02 | 2℃ | -5℃ | 陰~多云 | 東北風(fēng) | 1-2級 | 49 | 優(yōu) | 1 |
2 | 2018-01-03 | 2℃ | -5℃ | 多云 | 北風(fēng) | 1-2級 | 28 | 優(yōu) | 1 |
3 | 2018-01-04 | 0℃ | -8℃ | 陰 | 東北風(fēng) | 1-2級 | 28 | 優(yōu) | 1 |
4 | 2018-01-05 | 3℃ | -6℃ | 多云~晴 | 西北風(fēng) | 1-2級 | 50 | 優(yōu) | 1 |
# 替換掉溫度的后綴℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df.loc[:, "yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')
使用dataframe條件表達(dá)式查詢
最低溫度低于-10度的列表
df[df["yWendu"] < -10].head()
? | ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel |
---|---|---|---|---|---|---|---|---|---|
22 | 2018-01-23 | -4 | -12 | 晴 | 西北風(fēng) | 3-4級 | 31 | 優(yōu) | 1 |
23 | 2018-01-24 | -4 | -11 | 晴 | 西南風(fēng) | 1-2級 | 34 | 優(yōu) | 1 |
24 | 2018-01-25 | -3 | -11 | 多云 | 東北風(fēng) | 1-2級 | 27 | 優(yōu) | 1 |
359 | 2018-12-26 | -2 | -11 | 晴~多云 | 東北風(fēng) | 2級 | 26 | 優(yōu) | 1 |
360 | 2018-12-27 | -5 | -12 | 多云~晴 | 西北風(fēng) | 3級 | 48 | 優(yōu) | 1 |
復(fù)雜條件查詢
注意,組合條件用&符號合并,每個條件判斷都得帶括號
## 查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優(yōu)的數(shù)據(jù)
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 | 晴 | 北風(fēng) | 1-2級 | 40 | 優(yōu) | 1 |
249 | 2018-09-07 | 27 | 16 | 晴 | 西北風(fēng) | 3-4級 | 22 | 優(yōu) | 1 |
使用df.query可以簡化查詢
形式:DataFrame.query(expr, inplace=False, **kwargs)
其中expr為要返回boolean結(jié)果的字符串表達(dá)式
形如:
- df.query(‘a(chǎn)<100’)
- df.query(‘a(chǎn) < b & b < c’),或者df.query(’(a<b)&(b<c)’)
df.query可支持的表達(dá)式語法:
- 邏輯操作符: &, |, ~
- 比較操作符: <, <=, ==, !=, >=, >
- 單變量操作符: -
- 多變量操作符: +, -, *, /, %
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 | 晴~多云 | 東北風(fēng) | 1-2級 | 59 | 良 | 2 |
1 | 2018-01-02 | 2 | -5 | 陰~多云 | 東北風(fēng) | 1-2級 | 49 | 優(yōu) | 1 |
2 | 2018-01-03 | 2 | -5 | 多云 | 北風(fēng) | 1-2級 | 28 | 優(yōu) | 1 |
查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優(yōu)的數(shù)據(jù)
## 查詢最高溫度小于30度,并且最低溫度大于15度,并且是晴天,并且天氣為優(yōu)的數(shù)據(jù)
df.query("bWendu<=30 & yWendu>=15 & tianqi=='晴' & aqiLevel==1")
? | ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel |
---|---|---|---|---|---|---|---|---|---|
235 | 2018-08-24 | 30 | 20 | 晴 | 北風(fēng) | 1-2級 | 40 | 優(yōu) | 1 |
249 | 2018-09-07 | 27 | 16 | 晴 | 西北風(fēng) | 3-4級 | 22 | 優(yōu) | 1 |
查詢溫差大于15度的日子
df.query("bWendu-yWendu >= 15").head()
? | ymd | bWendu | yWendu | tianqi | fengxiang | fengli | aqi | aqiInfo | aqiLevel |
---|---|---|---|---|---|---|---|---|---|
68 | 2018-03-10 | 14 | -2 | 晴 | 東南風(fēng) | 1-2級 | 171 | 中度污染 | 4 |
82 | 2018-03-24 | 22 | 5 | 晴 | 西南風(fēng) | 1-2級 | 119 | 輕度污染 | 3 |
83 | 2018-03-25 | 24 | 7 | 晴 | 南風(fēng) | 1-2級 | 78 | 良 | 2 |
84 | 2018-03-26 | 25 | 7 | 多云 | 西南風(fēng) | 1-2級 | 151 | 中度污染 | 4 |
85 | 2018-03-27 | 27 | 11 | 晴 | 南風(fēng) | 1-2級 | 243 | 重度污染 | 5 |
可以使用外部的變量
# 查詢溫度在這兩個溫度之間的數(shù)據(jù)
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 | 多云~晴 | 西南風(fēng) | 3-4級 | 147 | 輕度污染 | 3 |
108 | 2018-04-19 | 26 | 13 | 多云 | 東南風(fēng) | 4-5級 | 170 | 中度污染 | 4 |
109 | 2018-04-20 | 28 | 14 | 多云~小雨 | 南風(fēng) | 4-5級 | 164 | 中度污染 | 4 |
116 | 2018-04-27 | 25 | 13 | 晴 | 西南風(fēng) | 3-4級 | 112 | 輕度污染 | 3 |
119 | 2018-04-30 | 24 | 14 | 多云 | 南風(fēng) | 3-4級 | 62 | 良 | 2 |
原文鏈接:https://blog.csdn.net/qq_45176548/article/details/112755795
相關(guān)推薦
- 2023-03-22 R語言基礎(chǔ)數(shù)據(jù)類型的具體使用_R語言
- 2024-01-15 Mybatis 開啟控制臺打印sql語句
- 2023-12-25 Spring中使用注解開發(fā)
- 2023-01-29 Python使用pandas導(dǎo)入xlsx格式的excel文件內(nèi)容操作代碼_python
- 2022-12-04 pyecharts如何實(shí)現(xiàn)顯示數(shù)據(jù)為百分比的柱狀圖_python
- 2022-05-06 C#迭代器方法介紹_C#教程
- 2022-05-04 EF使用數(shù)據(jù)注解特性創(chuàng)建表結(jié)構(gòu)_實(shí)用技巧
- 2022-12-22 python實(shí)現(xiàn)將list拼接為一個字符串_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支