Python中的andas进行组合筛选和范围筛选

参考链接:

https://blog.csdn.net/orangefly0214/article/details/82712117

https://www.cnblogs.com/beyondChan/p/10861045.html

对pandas中的DataFrame进行条件筛选,即筛选出符合条件的数据条;这里经常会遇到以下几种情况,下面举例说明:

1
2
3
4
5
6
7
8
df = pd.DataFrame({'A':[100, 200, 300, 400, 500],'B':['a', 'b', 'c', 'd', 'e'],'C':[1, 2, 3, 4, 5]})
df
A B C
0 100 a 1
1 200 b 2
2 300 c 3
3 400 d 4
4 500 e 5

(1)找出df中A列值为100的所有数据

1
2
3
4
df[df.A==100]
df[df['A'] == 100]
    A B C
0 100 a 1

这里也可以是小于(<)、大于(>)、小于等于(<=)、大于等于(>=)、不等于(!=)等情况。

(2)找出df中A列值为100、200、300的所有数据

1
2
3
4
5
6
7
num = [100, 200, 300]
#df[df['A'].isin(num)]
df[df.A.isin(num)] #筛选出A列值在num列表的数据条
A B C
0 100 a 1
1 200 b 2
2 300 c 3

要用.isin 而不能用in,用 in以后选出来的值都是True 和False,然后报错:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any()

(3)找出df中A列值为100且B列值为‘a’的所有数据

1
2
3
df[(df.A==100)&(df.B=='a')]
A B C
0 100 a 1

(4)找出df中A列值为100或B列值为‘b’的所有数据

1
2
3
4
df[(df.A==100)|(df.B=='b')]
A B C
0 100 a 1
1 200 b 2

这里需要注意的是,多条件筛选的时候,必须加括号’()'。

判断值是否在某一个范围内进行筛选的时候需要使用DataFrame.isin()的isin()函数,而不能使用in。


Python中的andas进行组合筛选和范围筛选
https://fulequn.github.io/2020/09/Article202009262/
作者
Fulequn
发布于
2020年9月26日
许可协议