在使用pandas进行数据分析时,经常遇到需要过滤信息的场景,此时我们可以用到2种函数,query和filter。
query函数
query函数我认为类似sql语言中的where,可以对dataframe中的特定column进行筛选。具体语法如下:
df.query('列名 判断 值'),如df.query('column1 > 2 and column 2<1')
等于
df[df[列名] 判断 值],如 df[df[column1]>2 & df[column2]<1]
filter函数
filter常规用法,在pandas说明里很好找到:
DataFrame.filter(items=None, like=None, regex=None, axis=None)
#items对列进行筛选#regex表示用正则进行匹配#like进行筛选#axis=0表示对行操作,axis=1表示对列操作
今天我想分享一些特殊用法:
1. filter和匿名函数的使用,用来筛选groupby之后的数据。类似sql中groupby后的having
df1=df.groupby('district').filter(lambda x: x['age'].mean()>20)
结果会将所有age>20的district的行选掉,返回所有其他值。
网友评论