码迷,mamicode.com
首页 > 其他好文 > 详细

pandas条件组合筛选和按范围筛选

时间:2020-11-16 14:05:15      阅读:25      评论:0      收藏:0      [点我收藏+]

标签:load   column   The   axis   函数   dom   多个   lambda   info   

一、过滤机制
可以按照下列方法,依据列的值过滤DataFrame处理某些符合条件的行
dataframe[ 条件 ]

dataframe[ dataframe["colname"] > value ]
dataframe[ dataframe["colname"] < value ]
dataframe[ dataframe["colname"] != value ]

二、推导过程

boolean_array =   dataframe["colname"] > value   ————>   Series type with bool values
dataframe[boolean_array]    —————>  DataFrame filtered
dataframe[ dataframe["colname"] > value ]    —————>  DataFrame filtered

三、多条件过滤

dataframe[ dataframe["col1"] > val1 & dataframe["col2"] != val2] 

四、举例

1、从记录中选出所有fault_code列的值在fault_list= [487, 479, 500, 505]这个范围内的记录
record2=record[record[‘FAULT_CODE‘].isin(fault_list)]
技术图片

要用.isin 而不能用in,用 in以后选出来的值都是True 和False,然后报错:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any()

2、选出所有WTGS_CODE=20004013的记录

set=20004013
record= record[record[‘WTGS_CODE‘] == set]

技术图片
要点:
(1)多个条件筛选的时候每个条件都必须加括号。
(2)判断值是否在某一个范围内进行筛选的时候需要使用DataFrame.isin()的isin()函数,而不能使用in。

3、using DataFrame.apply, which applies a function along a given axis,

df = pandas.DataFrame(np.random.randn(5, 3), columns=[‘a‘, ‘b‘, ‘c‘])
df: 
          a         b         c
0 -0.001968 -1.877945 -1.515674
1 -0.540628  0.793913 -0.983315
2 -1.313574  1.946410  0.826350
3  0.015763 -0.267860 -2.228350
4  0.563111  1.195459  0.343168

df[df.apply(lambda x: x[‘b‘] > x[‘c‘], axis=1)]
Out: 
          a         b         c
1 -0.540628  0.793913 -0.983315
2 -1.313574  1.946410  0.826350
3  0.015763 -0.267860 -2.228350
4  0.563111  1.195459  0.343168

or
mask = df.apply(lambda row: row["col"].val < 100, axis=1)
df[mask]

pandas条件组合筛选和按范围筛选

标签:load   column   The   axis   函数   dom   多个   lambda   info   

原文地址:https://www.cnblogs.com/treasury-manager/p/13956651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!