Agregação de pandas ignorando NaNs
Agrego meu dataframe do Pandas:data
. Especificamente, quero obter a média e somaamount
s por tuplas de [origin
etype
] Para calcular a média e somar, tentei as funções numpy abaixo:
import numpy as np
import pandas as pd
result = data.groupby(groupbyvars).agg({'amount': [ pd.Series.sum, pd.Series.mean]}).reset_index()
Meu problema é que oamount
coluna incluiNaN
s, o que causa aresult
do código acima para ter um monte deNaN
média e somas.
Conheço ambospd.Series.sum
epd.Series.mean
terskipna=True
por padrão, então por que ainda estou recebendoNaN
está aqui?
Eu também tentei isso, o que obviamente não funcionou:
data.groupby(groupbyvars).agg({'amount': [ pd.Series.sum(skipna=True), pd.Series.mean(skipna=True)]}).reset_index()
EDITAR: Por sugestão de @ Korem, também tentei usar umpartial
como abaixo:
s_na_mean = partial(pd.Series.mean, skipna = True)
data.groupby(groupbyvars).agg({'amount': [ np.nansum, s_na_mean ]}).reset_index()
mas obtenha este erro:
error: 'functools.partial' object has no attribute '__name__'