【发布时间】:2014-10-10 20:29:49
【问题描述】:
如果我在 pandas 中有一个像这样的空 DataFrame:
df = pandas.DataFrame(columns=['a','b','c'])
>>> df
Empty DataFrame
Columns: [a, b, c]
Index: []
我在组上进行聚合,输出将通常是一个空的 DataFrame:
>>> df.groupby('a', as_index=False).sum()
Empty DataFrame
Columns: [a, b, c]
Index: []
我说通常是因为并非总是如此。它对min()、max()、sum()、count() 和quantile() 有效,但不适用于mean(),这会引发异常:
>>> df.groupby('a', as_index=False).mean()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/pandas/core/groupby.py", line 666, in mean
return self._cython_agg_general('mean')
File "/usr/local/lib/python2.7/site-packages/pandas/core/groupby.py", line 2358, in _cython_agg_general
new_items, new_blocks = self._cython_agg_blocks(how, numeric_only=numeric_only)
File "/usr/local/lib/python2.7/site-packages/pandas/core/groupby.py", line 2408, in _cython_agg_blocks
raise DataError('No numeric types to aggregate')
pandas.core.groupby.DataError: No numeric types to aggregate
为什么这个聚合函数的行为不同?
我在 python 2.7 上使用 pandas 0.14.1。
【问题讨论】:
-
如果你查看源代码,你会看到不同的方法是如何创建和调用的