Pandas_Select_Data_Boolen

Pandas_Select_Data_Boolen

import pandas as pd
import numpy as np
​
iris = pd.read_csv('iris.csv')
iris.head(2)

out:
sepal_length    sepal_width petal_length    petal_width species
0   5.1 3.5 1.4 0.2 setosa
1   4.9 3.0 1.4 0.2 setosa

另一种常见操作是使用布尔向量来过滤数据。

操作符为:| 对应or,& 对应and,~对应not。

必须使用括号对这些进行分组。

使用布尔向量索引系列的工作方式与NumPy ndarray完全相同:

iris[iris.sepal_length>7]

out:
sepal_length    sepal_width petal_length    petal_width species
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica
iris.loc[iris.sepal_length>7]

out:
sepal_length    sepal_width petal_length    petal_width species
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica

& (and)

iris[(iris.sepal_length>7) & (iris.sepal_width<3)]

out:
sepal_length    sepal_width petal_length    petal_width species
107 7.3 2.9 6.3 1.8 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
130 7.4 2.8 6.1 1.9 virginica
iris.loc[(iris.sepal_length>7) & (iris.sepal_width<3)]

out:
sepal_length    sepal_width petal_length    petal_width species
107 7.3 2.9 6.3 1.8 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
130 7.4 2.8 6.1 1.9 virginica

|(or)

iris[(iris.sepal_length>7) | (iris.sepal_width>4)]

out:
sepal_length sepal_width petal_length petal_width species
15 5.7 4.4 1.5 0.4 setosa
32 5.2 4.1 1.5 0.1 setosa
33 5.5 4.2 1.4 0.2 setosa
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica


```python
iris.loc[(iris.sepal_length>7) | (iris.sepal_width>4)]

out:
sepal_length    sepal_width petal_length    petal_width species
15  5.7 4.4 1.5 0.4 setosa
32  5.2 4.1 1.5 0.1 setosa
33  5.5 4.2 1.4 0.2 setosa
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica

~(not)

iris[~(iris.sepal_length<=7)]

out:
sepal_length    sepal_width petal_length    petal_width species
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica

使用“-”也可以起到同样作用。

iris[-(iris.sepal_length<=7)]

out:
sepal_length    sepal_width petal_length    petal_width species
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica
iris.loc[~(iris.sepal_length<=7)]

out:
sepal_length    sepal_width petal_length    petal_width species
102 7.1 3.0 5.9 2.1 virginica
105 7.6 3.0 6.6 2.1 virginica
107 7.3 2.9 6.3 1.8 virginica
109 7.2 3.6 6.1 2.5 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
125 7.2 3.2 6.0 1.8 virginica
129 7.2 3.0 5.8 1.6 virginica
130 7.4 2.8 6.1 1.9 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica

使用map()

criterion = iris.sepal_length.map(lambda s: s>7.5)
iris[criterion]

out:
sepal_length    sepal_width petal_length    petal_width species
105 7.6 3.0 6.6 2.1 virginica
117 7.7 3.8 6.7 2.2 virginica
118 7.7 2.6 6.9 2.3 virginica
122 7.7 2.8 6.7 2.0 virginica
131 7.9 3.8 6.4 2.0 virginica
135 7.7 3.0 6.1 2.3 virginica
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 目录: Android:Android 0.*Android 1.*Android 2.*Android 3.*A...
    敲代码的令狐葱阅读 4,513评论 0 2
  • 和美女的沟通是在五月底的时候, 彼此加了微信, 美女不爱发朋友圈, 而我却是个天天发圈的, 然后七月底的一天就突然...
    卓尔雅致阅读 489评论 0 4
  • 我最近发明了一台神奇的课桌,这台课桌可以帮你按摩,复习作业或者考试重点,还可以帮你收拾桌面。 桌面上有个液晶屏...
    庄羽阅读 452评论 0 0
  • 从东十字街沿着粮管所往东100米,有两间低矮的楼房,这座楼房的主人和我的父亲是旧友,生活也不宽裕,一儿一女...
    蓝色追寻阅读 613评论 0 4
  • 青青子衿,悠悠我心。湛蓝的夜空中,星星点点,好似一盘沙,挂印在空中,而我人生那片夜空中,也是群星闪耀,但令我铭记的...
    姜宇艳阅读 1,395评论 0 1

友情链接更多精彩内容