我通过复制一些R小插曲中的路由来学习Pandaspackage。现在,我使用R中的dplyr包作为示例:
http://cran.rstudio.com/web/packages/dplyr/vignettes/introduction.html
R脚本

planes <- group_by(hflights_df, TailNum)
delay <- summarise(planes,
  count = n(),
  dist = mean(Distance, na.rm = TRUE))
delay <- filter(delay, count > 20, dist < 2000)

python脚本
planes = hflights.groupby('TailNum')
planes['Distance'].agg({'count' : 'count',
                        'dist' : 'mean'})

如何在python中显式声明需要跳过NA

最佳答案

这是个骗人的问题,因为你不这么做。熊猫将自动从聚合函数中排除NaN数字。考虑我的:

    b   c   d  e
a
2   2   6   1  3
2   4   8 NaN  7
2   4   4   6  3
3   5 NaN   2  6
4 NaN NaN   4  1
5   6   2   1  8
7   3   2   4  7
9   6   1 NaN  1
9 NaN NaN   9  3
9   3   4   6  1

内部df函数将忽略count()值,因此将忽略NaN。我们得到mean()的唯一点是当唯一的值是NaN时。然后,我们取一个空集合的平均值,结果是:
In[335]: df.groupby('a').mean()
Out[333]:
          b    c    d         e
a
2  3.333333  6.0  3.5  4.333333
3  5.000000  NaN  2.0  6.000000
4       NaN  NaN  4.0  1.000000
5  6.000000  2.0  1.0  8.000000
7  3.000000  2.0  4.0  7.000000
9  4.500000  2.5  7.5  1.666667

聚合函数的工作方式相同:
In[340]: df.groupby('a')['b'].agg({'foo': np.mean})
Out[338]:
        foo
a
2  3.333333
3  5.000000
4       NaN
5  6.000000
7  3.000000
9  4.500000

附录:请注意标准dataframe.mean API如何允许您控制包含NaN值,其中默认值为exclusion。

10-06 14:24
查看更多