Pandas group by filter based based condition

时间:2017-02-27 03:14:22

标签: python pandas dataframe

我有一个与此处提到的数据集非常相似的数据集 http://pandas.pydata.org/pandas-docs/stable/10min.html#grouping

>>> df
     A      B         C
0  foo    one -1.735400
1  bar    one -0.148954
2  foo    two  0.103798
3  bar  three -0.576249
4  foo    two  1.379046
5  bar    two  0.802281
6  foo    one -0.758771
7  foo  three  1.270179

我执行了df.groupby(['A','B'])['C'].sum()

命令
>>> grpd = df.groupby(['A','B'])['C'].sum()

>>> grpd
A    B    
bar  one     -0.148954
     three   -0.576249
     two      0.802281
foo  one     -2.494171
     three    1.270179
     two      1.482844
Name: C, dtype: float64

在我的特定情况下,A列有storeid,B是月(一年),C是销售价值

目标是找到每月销售超过一定值的所有商店。

示例问题 - 哪个楼层已经售出超过1000美元的任何月份?

我可以在SQL中轻松完成此操作但不确定如何在Pandas数据框中执行此操作。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您可以groupby MuliIndex级别,然后使用过滤。

grpd.groupby(level='A').filter(lambda grp: (grp > 1000).all())