https://blog.csdn.net/yj1556492839/article/details/80075214
虽然去年就开始用pandas筛选数据,但有些方法还是容易忘记,工作中写的代码差点出错了,所以把这些内容记下来。其实英文官方文档上的内容非常详细,可以多看看。
多条件筛选
这里的筛选方法,是根据不同字段的不同条件,对行进行筛选,每个条件得到一个index集合, 求不同index集合的与、或、非和差集等运算。
数据如下:
import pandas as pd
from pandas import DataFrame, Series
data = DataFrame({"a":[1, 2, 3, 4], "b":[6, 7, 8, 9]})
Out[22]:
a b
0 1 6
1 2 7
2 3 8
3 4 9
1
2
3
4
5
6
7
8
9
10
交集(与关系):&
选出a列大于2 并且 b列小于9的数据。index[2, 3] 和 index[0, 1, 2] => 交集为index[2]
data[(data["a"]>2) & (data["b"]<9)]
Out[23]:
a b
2 3 8
1
2
3
4
5
并集(或关系):|
选出a列大于2 或者 b列等于6的数据
data[(data["a"]>2) | (data["b"]==6)]
Out[26]:
a b
0 1 6
2 3 8
3 4 9
1
2
3
4
5
6
7
补集(非关系):~
选出不符合“a列大于2”这一条件的数据
data[~(data["a"]>2)]
Out[27]:
a b
0 1 6
1 2 7
1
2
3
4
5
对称差集:^
属于集合A和B的并集但不属于A和B的交集的元素
data[(data['a']>=2)]#集合A
Out[73]:
a b
1 2 7
2 3 8
3 4 9
data[(data['b']<=8)]#集合B
Out[74]:
a b
0 1 6
1 2 7
2 3 8
data[(data['a']>=2) ^ (data['b']<=8)]#对称差集
Out[75]:
a b
0 1 6
3 4 9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
isin(序列):选出在序列中的数据
lis = [3, 4]
data[data['a'].isin(lis)]
Out[28]:
a b
2 3 8
3 4 9
#也可以用map方法实现上述功能
data[data['a'].map(lambda x:x in a)]
---------------------
作者:YangJianShuai
来源:CSDN
原文:https://blog.csdn.net/yj1556492839/article/details/80075214
版权声明:本文为博主原创文章,转载请附上博文链接!