Pandas aggregation ignoriert Nans

Ich aggregierten meine Pandas dataframe: data. Speziell, ich will den Durchschnitt und die Summe amounts durch Tupel von [origin und type]. Für die Mittelung und Summierung versuchte ich die numpy-Funktionen im folgenden:

import numpy as np
import pandas as pd
result = data.groupby(groupbyvars).agg({'amount': [ pd.Series.sum, pd.Series.mean]}).reset_index() 

Mein Problem ist, dass die amount Spalte enthält NaNs, die bewirkt, dass die result dem oben aufgeführten code, um eine Menge von NaN Durchschnitt und Summen.

Ich kenne beide pd.Series.sum und pd.Series.mean haben skipna=True standardmäßig, also warum bin ich noch immer NaNs hier?

Habe ich auch dies ausprobiert, was natürlich nicht funktioniert:

data.groupby(groupbyvars).agg({'amount': [ pd.Series.sum(skipna=True), pd.Series.mean(skipna=True)]}).reset_index() 

EDIT:
Auf @Korem ' s Vorschlag habe ich auch versucht, eine partial wie folgt:

s_na_mean = partial(pd.Series.mean, skipna = True)    
data.groupby(groupbyvars).agg({'amount': [ np.nansum, s_na_mean ]}).reset_index() 

aber diese Fehlermeldung erhalten:

error: 'functools.partial' object has no attribute '__name__'
  • Konnte Sie nach ein paar Beispiel-Daten? Auch, um mit zu beginnen, anstatt pd.Series.sum - nutzen Sie einfach 'sum' - der code ist, sollte ein schneller Weg.
  • Danke, ich habe mich für pd.Series.sum jus denn er hatte eine skipna option. Lesen @Korem die Antwort, ich verwende jetzt np.nansum. Aber np.nanmean ist nicht erhältlich in meiner version (1.7.1) von numpy.Ich werde versuchen, nach repräsentativen Daten, die eine Weile dauern kann.
InformationsquelleAutor Zhubarb | 2014-10-01
Schreibe einen Kommentar