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

 更新时间:2023年02月22日 10:39:22   作者:饺子大人  
本文主要介绍了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多条件提取行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python scrapy框架中Request对象和Response对象的介绍

    python scrapy框架中Request对象和Response对象的介绍

    本文介绍了python基础之scrapy框架中Request对象和Response对象的介绍,Request对象主要是用来请求数据,爬取一页的数据重新发送一个请求的时候调用,Response对象一般是由scrapy给你自动构建的,因此开发者不需要关心如何创建Response对象,下面来一起来了解更多内容吧
    2022-02-02
  • python遍历小写英文字母的方法

    python遍历小写英文字母的方法

    今天小编就为大家分享一篇python遍历小写英文字母的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python使用pyecharts绘制世界地图,省级地图,城市地图实例详解

    Python使用pyecharts绘制世界地图,省级地图,城市地图实例详解

    这篇文章主要介绍了如何使用Python中的pyecharts库绘制世界地图、中国地图、省级地图、市级地图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试
    2022-02-02
  • pandas如何修改某一列的数据

    pandas如何修改某一列的数据

    这篇文章主要介绍了pandas如何修改某一列的数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python网络编程详解

    Python网络编程详解

    这篇文章主要介绍了Python网络编程详解,涉及具体代码示例,还是挺不错的,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • Python3基本输入与输出操作实例分析

    Python3基本输入与输出操作实例分析

    这篇文章主要介绍了Python3基本输入与输出操作,结合实例形式分析了Python3输入输出基本语法、编码转换、注释及中文编码相关使用技巧,需要的朋友可以参考下
    2020-02-02
  • python绘图库Matplotlib的安装

    python绘图库Matplotlib的安装

    这篇文章主要介绍了python库绘图Matplotlib的安装,需要的朋友可以参考下
    2014-07-07
  • 利用Python发送邮件或发带附件的邮件

    利用Python发送邮件或发带附件的邮件

    这篇文章主要介绍了如何利用Python发送邮件或发带附件的邮件,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下。
    2020-11-11
  • Anaconda下Python中h5py与netCDF4模块下载与安装的教程详解

    Anaconda下Python中h5py与netCDF4模块下载与安装的教程详解

    这篇文章主要为大家详细介绍了基于Anaconda,下载并安装Python中h5py与netCDF4这两个模块的方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • python使用pandas实现数据分割实例代码

    python使用pandas实现数据分割实例代码

    这篇文章主要介绍了python使用pandas实现数据分割实例代码,介绍了使用pandas实现对dataframe格式的数据分割成时间跨度相等的数据块,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01

最新评论