09_Pandas从多个条件(AND,OR,NOT)中提取行

使用Pandas从多个条件(AND,OR,NOT)中提取行的方法。

有以下2点需要注意:

  • &,|,〜的使用(and、or、not的错误)
  • 使用比较运算符时,请将每个条件括在括号中。

以下数据为例。

import pandas as pddf = 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也同样适用。

如何提取(选择)行

首先,展示如何从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多个条件提取(选择)行的代码-示例

具有两个条件值的pandas.Series,可以使用&获得如下结果。在这里,为了便于说明,将==和〜用作二个条件,但是仅使用!=也是可以。

print(df['age'] < 35)
# 0     True
# 1    False
# 2     True
# 3    False
# 4     True
# 5     True
# Name: age, dtype: boolprint(~(df['state'] == 'NY'))
# 0    False
# 1     True
# 2     True
# 3     True
# 4     True
# 5    False
# Name: state, dtype: boolprint((df['age'] < 35) & ~(df['state'] == 'NY'))
# 0    False
# 1    False
# 2     True
# 3    False
# 4     True
# 5    False
# dtype: bool

仅提取(选择)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: booldf_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     57df_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

09_Pandas从多个条件(AND,OR,NOT)中提取行相关推荐

  1. mysql按条件提取数据库_SQL中的where条件,在数据库中提取与应用浅析

    1        问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语 ...

  2. pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe )

    pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe ) 目录

  3. pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe )

    pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe ) 目录

  4. 在带有OR条件的LEFT JOIN中使用索引(Using index in LEFT JOIN with OR condition)

    在带有OR条件的LEFT JOIN中使用索引(Using index in LEFT JOIN with OR condition)

  5. 不要在循环,条件或嵌套函数中调用 Hook

    只在最顶层使用 Hook 不要在循环,条件或嵌套函数中调用 Hook, 确保总是在你的 React 函数的最顶层调用他们.遵守这条规则,你就能确保 Hook 在每一次渲染中都按照同样的顺序被调用.这让 ...

  6. asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表

    当Excel表的数据太多时,需要进行数据的查询与提取,往往要使用查找与引用函数.提取条件简单还好说,一复杂起来,就要使用又长又头疼的嵌套函数,不要说用了,光看懂函数都要死一片脑细胞. 别伤脑筋了,为什 ...

  7. 18_NumPy数组ndarray中提取,删除满足条件的元素,行和列

    18_NumPy数组ndarray中提取,删除满足条件的元素,行和列 将通过示例代码说明从NumPy数组ndarray中提取(获取)或删除满足条件的元素,行和列的方法. 在此对以下内容进行说明: 提取 ...

  8. 如何使用条件格式在 Excel 中隔行加底纹

    http://support.microsoft.com/kb/268568 要对工作表中的行隔行应用底纹,请按照下列步骤操作: 1. 启动 Excel,然后打开新工作表. 2. 在单元格 A1:D4 ...

  9. 如何使用条件格式突出显示Google表格中的行

    Should you need to isolate data in Google Sheets based on specific criteria in a cell, you can use c ...

最新文章

  1. java 字符串常用函数_Java学习(5)——字符串常用函数
  2. JQuery中$.ajax()分享
  3. Symantec Endpoint Protection下载方法
  4. 调制优缺点_钓鱼,何时用搓饵、何时用拉饵?及对应的优缺点分析
  5. 常见java面试题 普通类和抽象类的区别?
  6. hive 自定义元数据表_Hive分区表和桶表的使用
  7. 前端学习(659):小结
  8. eclipse-java-2019-12-R-win32-x86_64分享
  9. 当博客系统遇上live2d后
  10. mysql 安装目录配置_linux 下mysql安装,目录配置
  11. java数组怎么添加元素_Java封装数组之添加元素操作实例分析
  12. 计算机仿真期末考试,2015年数学物理建模期末考试试题.docx
  13. html日历修改,HTML精美日历插件
  14. 【特征工程系列3】Zipf定律及其特征化
  15. 大数据入门书籍推荐以及Hive学习资料
  16. video 圆角 html,圆形视频和圆角视频的一种实现方式
  17. HDU6348 Buy and Resell
  18. S​alesforce是怎么完成从0到1的?
  19. Jetpack Compose之手势使用
  20. ceph rgw:bucket policy实现

热门文章

  1. public,nbsp;private,nbsp;prote…
  2. 解决layui的table数据重载reload where参数会保留上次条件的问题
  3. Redis 从入门到弃坑
  4. 浙江理工大学英语平台Unipus自动答题
  5. Android OpenCV(四十五):图像修复
  6. 廖雪峰Python教程笔记(一)
  7. 【刷题】BZOJ 2754 [SCOI2012]喵星球上的点名
  8. 中专在学校里考的计算机四级证属于中级职业技能证书吗?
  9. 什么是 游戏引擎 ?各个主流引擎的区别
  10. IDEA2020 安装教程,图文教程