09_Pandas从多个条件(AND,OR,NOT)中提取行
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)中提取行相关推荐
- mysql按条件提取数据库_SQL中的where条件,在数据库中提取与应用浅析
1 问题描述 一条SQL,在数据库中是如何执行的呢?相信很多人都会对这个问题比较感兴趣.当然,要完整描述一条SQL在数据库中的生命周期,这是一个非常巨大的问题,涵盖了SQL的词法解析.语 ...
- pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe )
pandas基于条件判断更新dataframe中所有数据列数值内容的值(Conditionally updating all values in pandas Dataframe ) 目录
- pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe )
pandas基于条件判断更新dataframe中特定数据列数值内容的值(Conditionally updating values in specific pandas Dataframe ) 目录
- 在带有OR条件的LEFT JOIN中使用索引(Using index in LEFT JOIN with OR condition)
在带有OR条件的LEFT JOIN中使用索引(Using index in LEFT JOIN with OR condition)
- 不要在循环,条件或嵌套函数中调用 Hook
只在最顶层使用 Hook 不要在循环,条件或嵌套函数中调用 Hook, 确保总是在你的 React 函数的最顶层调用他们.遵守这条规则,你就能确保 Hook 在每一次渲染中都按照同样的顺序被调用.这让 ...
- asp.net怎么实现按条件查询_用这个提取函数王中王,制作数据查询表
当Excel表的数据太多时,需要进行数据的查询与提取,往往要使用查找与引用函数.提取条件简单还好说,一复杂起来,就要使用又长又头疼的嵌套函数,不要说用了,光看懂函数都要死一片脑细胞. 别伤脑筋了,为什 ...
- 18_NumPy数组ndarray中提取,删除满足条件的元素,行和列
18_NumPy数组ndarray中提取,删除满足条件的元素,行和列 将通过示例代码说明从NumPy数组ndarray中提取(获取)或删除满足条件的元素,行和列的方法. 在此对以下内容进行说明: 提取 ...
- 如何使用条件格式在 Excel 中隔行加底纹
http://support.microsoft.com/kb/268568 要对工作表中的行隔行应用底纹,请按照下列步骤操作: 1. 启动 Excel,然后打开新工作表. 2. 在单元格 A1:D4 ...
- 如何使用条件格式突出显示Google表格中的行
Should you need to isolate data in Google Sheets based on specific criteria in a cell, you can use c ...
最新文章
- java 字符串常用函数_Java学习(5)——字符串常用函数
- JQuery中$.ajax()分享
- Symantec Endpoint Protection下载方法
- 调制优缺点_钓鱼,何时用搓饵、何时用拉饵?及对应的优缺点分析
- 常见java面试题 普通类和抽象类的区别?
- hive 自定义元数据表_Hive分区表和桶表的使用
- 前端学习(659):小结
- eclipse-java-2019-12-R-win32-x86_64分享
- 当博客系统遇上live2d后
- mysql 安装目录配置_linux 下mysql安装,目录配置
- java数组怎么添加元素_Java封装数组之添加元素操作实例分析
- 计算机仿真期末考试,2015年数学物理建模期末考试试题.docx
- html日历修改,HTML精美日历插件
- 【特征工程系列3】Zipf定律及其特征化
- 大数据入门书籍推荐以及Hive学习资料
- video 圆角 html,圆形视频和圆角视频的一种实现方式
- HDU6348 Buy and Resell
- S​alesforce是怎么完成从0到1的?
- Jetpack Compose之手势使用
- ceph rgw:bucket policy实现