網站首頁 編程語言 正文
使用Pandas從多個條件(AND,OR,NOT)中提取行的方法。
有以下2點需要注意:
- &,|,?的使用(and、or、not的錯誤)
- 使用比較運算符時,請將每個條件括在括號中。
以下數據為例。
import pandas as pd
df = pd.read_csv('./data/09/sample_pandas_normal.csv')
print(df)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
本例是使用pandas.DataFrame,但pandas.Series也同樣適用。
如何提?。ㄟx擇)行
首先,展示如何從pandas.DataFrame中提取(選擇)行以獲得新的pandas.DataFrame。
使用布爾列表(數組)或pandas.Series,只能提取(選擇)True行。
mask = [True, False, True, False, True, False]
df_mask = df[mask]
print(df_mask)
# name age state point
# 0 Alice 24 NY 64
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
通過AND,OR,NOT多個條件提?。ㄟx擇)行的代碼-示例
具有兩個條件值的pandas.Series,可以使用&獲得如下結果。在這里,為了便于說明,將==和?用作二個條件,但是僅使用!=也是可以。
print(df['age'] < 35)
# 0 ? ? True
# 1 ? ?False
# 2 ? ? True
# 3 ? ?False
# 4 ? ? True
# 5 ? ? True
# Name: age, dtype: bool
print(~(df['state'] == 'NY'))
# 0 ? ?False
# 1 ? ? True
# 2 ? ? True
# 3 ? ? True
# 4 ? ? True
# 5 ? ?False
# Name: state, dtype: bool
print((df['age'] < 35) & ~(df['state'] == 'NY'))
# 0 ? ?False
# 1 ? ?False
# 2 ? ? True
# 3 ? ?False
# 4 ? ? True
# 5 ? ?False
# dtype: bool
僅提?。ㄟx擇)True行。
df_and = df[(df['age'] < 35) & ~(df['state'] == 'NY')]
print(df_and)
# name age state point
# 2 Charlie 18 CA 70
# 4 Ellen 24 CA 88
對于OR也是如此。使用|。
print((df['age'] < 20) | (df['point'] > 90))
# 0 ? ?False
# 1 ? ? True
# 2 ? ? True
# 3 ? ?False
# 4 ? ?False
# 5 ? ?False
# dtype: bool
df_or = df[(df['age'] < 20) | (df['point'] > 90)]
print(df_or)
# ? ? ? name ?age state ?point
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
3個以上條件的運算符的優先級
運算符的優先級是NOT(?),AND(&),OR(|)。因此,結果因順序而異。
df_multi_1 = df[(df['age'] < 35) | ~(df['state'] == 'NY') & (df['point'] < 75)]
print(df_multi_1)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
df_multi_2 = df[(df['age'] < 35) & (df['point'] < 75) | ~(df['state'] == 'NY')]
print(df_multi_2)
# ? ? ? name ?age state ?point
# 0 ? ?Alice ? 24 ? ?NY ? ? 64
# 1 ? ? ?Bob ? 42 ? ?CA ? ? 92
# 2 ?Charlie ? 18 ? ?CA ? ? 70
# 3 ? ? Dave ? 68 ? ?TX ? ? 70
# 4 ? ?Ellen ? 24 ? ?CA ? ? 88
# 5 ? ?Frank ? 30 ? ?NY ? ? 57
將每個組括在括號中比較安全。
df_multi_3 = df[((df['age'] < 35) | ~(df['state'] == 'NY')) & (df['point'] < 75)]
print(df_multi_3)
# name age state point
# 0 Alice 24 NY 64
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 5 Frank 30 NY 57
原文鏈接:https://blog.csdn.net/qq_18351157/article/details/105403779
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-07-14 一文教會你用redux實現computed計算屬性_React
- 2022-06-08 ASP.NET?Core使用IHttpClientFactory發出HTTP請求_基礎應用
- 2022-06-12 python操作RabbitMq的三種工作模式_python
- 2022-05-23 Android利用Palette實現提取圖片顏色_Android
- 2022-12-29 Redis并發訪問問題詳細講解_Redis
- 2023-03-23 React?Render?Props共享代碼技術_React
- 2023-01-03 利用C++模擬實現STL容器:list_C 語言
- 2022-08-23 Python?Pandas數據處理高頻操作詳解_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支