广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pandas多个条件(AND,OR,NOT)中提取行
  • 684
分享到

Pandas多个条件(AND,OR,NOT)中提取行

Pandas多条件提取行Pandas提取行 2023-02-22 12:02:24 684人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录如何提取(选择)行通过AND,OR,NOT多个条件提取(选择)行的代码-示例3个以上条件的运算符的优先级使用pandas从多个条件(AND,OR,NOT)中提取行的方法。 有以下

使用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也同样适用。

如何提取(选择)行

首先,展示如何从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: 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

仅提取(选择)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

到此这篇关于Pandas多个条件(AND,OR,NOT)中提取行的文章就介绍到这了,更多相关Pandas多条件提取行内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Pandas多个条件(AND,OR,NOT)中提取行

本文链接: https://www.lsjlt.com/news/197128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pandas多个条件(AND,OR,NOT)中提取行
    目录如何提取(选择)行通过AND,OR,NOT多个条件提取(选择)行的代码-示例3个以上条件的运算符的优先级使用Pandas从多个条件(AND,OR,NOT)中提取行的方法。 有以下...
    99+
    2023-02-22
    Pandas多条件提取行 Pandas 提取行
  • Pandas多个条件中怎么提取行
    本文小编为大家详细介绍“Pandas多个条件中怎么提取行”,内容详细,步骤清晰,细节处理妥当,希望这篇“Pandas多个条件中怎么提取行”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。使用Pandas从多个条件(A...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作