Исходя из исходного кода, это выглядит как ошибка.
Когда pd.Series.agg
получает объект функции, он ищет его в своем предопределенном списке функций Cython:
# pandas.core.base line:555
f = self._is_cython_func(arg)
# pandas.core.base line:639
def _is_cython_func(self, arg):
""" if we define an internal function for this argument, return it """
return self._cython_table.get(arg)
который содержит:
pd.Series._cython_table
OrderedDict([(<function sum(iterable, start=0, /)>, 'sum'),
...
(<function numpy.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>)>,'var'),
, который возвращает:
f == self._is_cython_func(arg) == 'var'
Затем он используется на getattr
:
# pandas.core.base line 556
if f and not args and not kwargs:
return getattr(self, f)(), None
, который возвращает:
getattr(pd.Series, 'var')
<function pandas.core.series.Series.var(self, axis=None, skipna=None, level=None, ddof=1, numeric_only=None, **kwargs)>
И виновник есть!ddof
сейчас равно 1.