在groupby之后将函数应用于过滤的组

时间:2018-05-21 11:36:26

标签: python pandas filter pandas-groupby

我知道有很多关于大熊猫的群体过滤问题,但是我已经经历了很多大熊猫,他们没有我需要的东西。

无论如何,这是我对数据框df所拥有的内容:

user1   user2  date         quantity
-----------------------------
Alice   Bob    2018-05-21   100
Alice   Bob    2018-05-19   20
Alice   Carol  2018-01-01   1000
Bob     Carol  2018-02-01   100

我想计算工作日的给定func对数量的函数(让我们说一些函数user1-user2)。

到目前为止我所拥有的是:

df['day'] = df['date'].dt.weekday
df.groupby(['user1','user2']).filter(lambda x: (x.day < 5).any() )

但我没有得到我所期望的。显然,过滤器的作用是仅选择其中至少有一个day条目是&lt; 5.我需要的是,对于一个特定的day对,user1-user2列小于5的所有行。

1 个答案:

答案 0 :(得分:3)

一个简单的解决方案是在执行groupby前过滤您的数据框

res = df[df['date'].dt.weekday < 5].groupby(...)