groupby之后的条件:数据科学

时间:2018-02-01 01:40:39

标签: python-3.x pandas pandas-groupby

我有一个很大的df,这是一个说明我的问题的例子。我想从这个数据框架中知道,根据year_of_life,id在工作方面的第一个百分比。我想通过years_of_life识别(我正在考虑一个假人)百分之一的年份,这个分配有更多的工作。

例如

id  year  rap   jobs_c    jobs  year_of_life  rap_new
1   2009    0      300     10      NaN       0  
2   2012    0     2012     12      0         0   
3   2013    0     2012     12      1         1
4   2014    0     2012     13      2         1
5   2015    1     2012     15      3         1
6   2016    0     2012     17      4         0
7   2017    0     2012     19      5         0
8   2009    0     2009     15      0         1
9   2010    0     2009     2       1         1
10  2011    0     2009     3       2         1
11  2012    1     2009     3       3         0
12  2013    0     2009     15      4         0
13  2014    0     2009     12      5         0
14  2015    0     2009     13      6         0
15  2016    0     2009     13      7         0
16  2011    0     2009     3       2         1
17  2012    1     2009     3       3         0
18  2013    0     2009     18      4         0
19  2014    0     2009     12      5         0
20  2015    0     2009     13      6         0
.....
100 2009    0     2007     5       6         1

我想确定(我正在考虑一个假人)一个百分之一的years_of_life,其中包含更多来自分配的工作,然后将这些工作中的工作按年份_of_life分配给第一个百分比

我尝试像thi这样的东西:

df.groupby(['year_of_life']).filter(lambda x : x.jobs> 
x.jobs.quantile(.99))['jobs'].sum()

但我有以下错误

TypeError: filter function returned a Series, but expected a scalar bool

1 个答案:

答案 0 :(得分:0)

这是你需要的吗?

df.loc[df.groupby(['year_of_life']).jobs.apply(lambda x : x>x.quantile(.99)).fillna(True),'jobs'].sum()
Out[193]: 102