Агрегация панд, игнорирующая NaN
Я объединяю мой фрейм данных Pandas:data
, Конкретно хочу получить среднюю и суммуamount
с помощью кортежей [origin
а такжеtype
]. Для усреднения и суммирования я попробовал следующие функции:
import numpy as np
import pandas as pd
result = data.groupby(groupbyvars).agg({'amount': [ pd.Series.sum, pd.Series.mean]}).reset_index()
Моя проблема в том, чтоamount
колонка включает в себяNaN
с, что вызываетresult
из приведенного выше кода, чтобы иметь многоNaN
средние и суммы.
Я знаю какpd.Series.sum
а такжеpd.Series.mean
иметьskipna=True
по умолчанию, так почему я все еще получаюNaN
здесь?
Я также попробовал это, что, очевидно, не сработало:
data.groupby(groupbyvars).agg({'amount': [ pd.Series.sum(skipna=True), pd.Series.mean(skipna=True)]}).reset_index()
РЕДАКТИРОВАТЬ: По предложению @ Korem я также попытался использоватьpartial
как показано ниже:
s_na_mean = partial(pd.Series.mean, skipna = True)
data.groupby(groupbyvars).agg({'amount': [ np.nansum, s_na_mean ]}).reset_index()
но получите эту ошибку:
error: 'functools.partial' object has no attribute '__name__'