面板数据:mean,groupby和condition

时间:2017-11-23 20:54:20

标签: python pandas

我想首先计算entr ==1时的工作平均值,然后计算jobs的平均值year_of_life

id  year  entry  cohort  jobs  year_of_life
1  2009    0     NaN      10      NaN
1  2012    1     2012     12      0
1  2013    0     2012     12      1
1  2014    0     2012     13      2
2  2010    1     2010     2       0
2  2011    0     2010     3       1
2  2012    0     2010     3       2
3  2007    0     NaN      4       Nan
3  2008    0     NaN      4       Nan
3  2012    1     2012     5       0
3  2013    0     2012     5       1

非常感谢

2 个答案:

答案 0 :(得分:1)

对于第一个,您可以使用布尔索引来过滤条件为True的行的数据帧,然后取平均值df[df.entry == 1].mean()。对于第二个,groupby year_of_life然后取每个组df.groupby('year_of_life').mean()的平均值。如果您希望同时满足这两个条件,请尝试分组df[df.entry == 1].groupby('year_of_life').mean()

答案 1 :(得分:1)

满足您的第一个要求 -

$_SESSION['SavedValue']=$_POST['mybtn']

满足您的第二个要求 - 在这里,我只考虑df.query('entry == 1').jobs.mean() 6.333333333333333 entry的工作。

1

如果你只想要df.assign(jobs=df.jobs.mask(df.entry == 1)).groupby('year_of_life').jobs.mean() year_of_life 0 NaN 1 6.666667 2 8.000000 Nan 4.000000 Name: jobs, dtype: float64 的意思,那么一个简单的groupby就足够了。

year_of_life

请注意,这与其他答案所暗示的不同,我认为这不是您想要的:

df.groupby('year_of_life').jobs.mean()

year_of_life
0      6.333333
1      6.666667
2      8.000000
Nan    4.000000
Name: jobs, dtype: float64