您的位置: 网站首页> Pandas教程> 当前文章

pandas分组过滤filter函数

老董-我爱我家房产SEO2022-03-10165围观,135赞

  pandas分组操作在实际工作中应用非常广泛,之前的文章介绍过pandas的分组聚合、分组使用agg函数、分组转换transform,本文介绍pandas的分组过滤操作,如果想系统的接触pandas分组后的各类操作可以看pandas分组操作系列详解

  无论是agg还是transform他们是对分组后的每组数据进行运算,而pandas分组过滤说是对分组后对组进行筛选,符合条件的组才进入到结果数据,不符合条件的组会被舍弃。分组过滤用filter函数实现。

  我们来看DataFrameGroupBy对象filter函数的官方文档写法

	  DataFrameGroupBy.filter(func, dropna=True, *args, **kwargs)

  其中filter函数参数func是自定义函数,func函数的参数为分组后的每个子组DataFrame本身,看下官方文档的例子:

# -*- coding:UTF-8 -*-
import pandas as pd

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
                          'foo', 'bar'],
                   'B' : [1, 2, 3, 4, 5, 6],
                   'C' : [2.0, 5., 8., 1., 2., 9.]})
grouped = df.groupby('A')
df_res = grouped.filter(lambda x: x['B'].mean() > 3)
print(df_res)
     A  B    C
1  bar  2  5.0
3  bar  4  1.0
5  bar  6  9.0

  其实filter函数比较简单,为了更熟悉一点,我们再看1个例子来加深理解。

# -*- coding:UTF-8 -*-
import pandas as pd

df = pd.DataFrame({'city' : ['bj', 'bj', 'nj', 'nj',
                          'tj', 'tj'],
                   'quyu' : ['chaoyang', 'haidian', 'jiangning', 'gulou', 'nankai', 'tanggu'],
                   'GDP' : [1000, 800, 700, 600, 500, 400]})
grouped = df.groupby('city')
df_res = grouped.filter(lambda x: x['GDP'].max() > 600)
print(df_res)
  city       quyu   GDP
0   bj   chaoyang  1000
1   bj    haidian   800
2   nj  jiangning   700
3   nj      gulou   600

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    pandas分组过滤filter函数文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 客服微信:a772483200