脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Pandas多个条件(AND,OR,NOT)中提取行

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

2023-02-28 11:16饺子大人 Python

本文主要介绍了Pandas多个条件(AND,OR,NOT)中提取行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

有以下2点需要注意:

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

以下数据为例。

?
1
2
3
4
5
6
7
8
9
10
11
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行。

?
1
2
3
4
5
6
7
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,可以使用&获得如下结果。在这里,为了便于说明,将==和〜用作二个条件,但是仅使用!=也是可以。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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行。

?
1
2
3
4
5
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也是如此。使用|。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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(|)。因此,结果因顺序而异。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

将每个组括在括号中比较安全。

?
1
2
3
4
5
6
7
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多条件提取行内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_18351157/article/details/105403779

延伸 · 阅读

精彩推荐
  • Python利用 python 对目录下的文件进行过滤删除

    利用 python 对目录下的文件进行过滤删除

    这篇文章主要给大家介绍了关于如何利用 python 对目录下的文件进行过滤删除的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有...

    EasonDev10622020-12-29
  • PythonPython3安装Pillow与PIL的方法

    Python3安装Pillow与PIL的方法

    今天小编就为大家分享一篇关于Python3安装Pillow与PIL的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看...

    TWSF10922021-06-11
  • Pythonpython使用socket实现图像传输功能

    python使用socket实现图像传输功能

    这篇文章主要为大家详细介绍了python使用socket实现图像传输功能,linux服务器与win10主机间的图像传输,文中示例代码介绍的非常详细,具有一定的参考价值...

    石头儿啊11632021-12-06
  • PythonPython序列化模块之pickle与json详解

    Python序列化模块之pickle与json详解

    这篇文章主要为大家介绍了Python中常用的两个序列化模块:pickle序列化和json序列化。文中的示例代码讲解详细,感兴趣的小伙伴可以学习一下...

    小小垂髫10152022-11-07
  • Python利用Python实现网络测试的示例代码

    利用Python实现网络测试的示例代码

    Speedtest CLI 为命令行带来 Speedtest 背后的可信技术和全球服务器网络。本文将利用它进行网络测试,感兴趣的小伙伴可以了解一下...

    Python 集中营10162022-12-07
  • PythonTensorFlow实现Batch Normalization

    TensorFlow实现Batch Normalization

    这篇文章主要为大家详细介绍了TensorFlow实现Batch Normalization,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    marsjhao7082021-01-20
  • Pythondjango中的*args 与 **kwargs使用介绍

    django中的*args 与 **kwargs使用介绍

    这篇文章主要介绍了django中的*args 与 **kwargs使用介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    loveguainiu5032021-09-22
  • Python在Python中用get()方法获取字典键值的教程

    在Python中用get()方法获取字典键值的教程

    这篇文章主要介绍了在Python中用get()方法获取字典键值的教程,是Python入门中的基础知识,需要的朋友可以参考下 ...

    Python教程网11972020-07-05