pandas筛选表格数据

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 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/baidu_32542573/article/details/87712686