【发布时间】:2018-05-21 20:01:59
【问题描述】:
我知道有很多关于 pandas 的 groupby-filter 问题,但我已经解决了其中的一些问题,但它们没有我需要的东西。
无论如何,这就是我对数据框 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
我想计算给定user1-user2 对的数量的函数(假设是某个函数func),仅限工作日。
到目前为止,我拥有的是:
df['day'] = df['date'].dt.weekday
df.groupby(['user1','user2']).filter(lambda x: (x.day < 5).any() )
但我没有得到我期望的结果。显然,过滤器的作用是仅选择至少一个 day 条目小于 5 的那些对。不过,我需要的是对于一个特定的 user1-user2 对,day 列小于 5 的所有行。
【问题讨论】:
-
先过滤再分组?
-
@YakymPirozhenko 我必须像这样进行几次计算——这只是一个演示案例。所以我想,比如说,在工作日、周末、工作日晚上等得到总和,但总是针对相同的
user1-user2对。它也是一个相当大的数据集(>10GB),有几行和>1Muser1-user2对,所以如果我这样做,我会一遍又一遍地做几个 groupbys...
标签: python pandas filter pandas-groupby