Ich habe einen Datenrahmen der folgenden Struktur, die für die Zwecke dieser Frage vereinfacht:Datenrahmen binned mittelt, überspringen nan
Date A B
2016/1/1 nan nan
2016/1/2 nan nan
2016/1/3 3 2
2016/1/4 4 1
2016/1/5 nan nan
2016/1/6 6 8
2016/1/7 7 nan
2016/1/8 8 3
2016/1/9 9 5
Was wünsche ich eine 3-tägige binned Durchschnitt erstellen zu tun, kann ich leicht tun dies mit
df = df.resample('3D', on='Date').mean()
jedoch mit dieser Methode die nan Werte als Null-Werte gezählt und sie beeinflussen den Mittelwert etwa so:
Date A B
2016/1/1 nan nan
2016/1/2 nan nan
2016/1/3 3 2
Mit df.resample('3D', on='Date').mean()
kehrt:
Date A B
2016/1/3 1 2/3
Wo, wie ich will erhalten:
Date A B
2016/1/3 3 2
Wenn die Werte für die Berechnung ignoriert werden na.
Gemäß der Dokumentation auf .mean() Ich sollte Werte der Lage sein, skipna wie auf der Seite aufgelistet:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mean.html#pandas.Series.mean
Allerdings, wenn ich folgendes ausgeführt:
df = df.resample('3D', on='Date').mean(skipna=True)
Die Folgendes wird zurückgegeben:
UnsupportedFunctionCall: numpy operations are not valid with resample. Use .resample(...).mean() instead
Wie gehe ich über solv diesen Fehler und die richtigen Mittelwerte, die ich begehre?
Ich denke, es gibt ein Problem, weil für 'df1 = df.resample ('3D', ein = 'Datum') mean()' I hole 'df1 = pd.DataFrame ({' A ': [3.0, 5.0, 8.0],' B ': [2.0 , 4.5, 4.0]}, index = pd.to_datetime (['2016-01-01', '2016-01-04', '2016-01-07'])) ' – jezrael
Also sind alle 'NaN' Werte von der Anzahl der Mittelwerte ausgeschlossen. – jezrael
Ja, das ist richtig, die Anzahl der Mittelwerte wird durch die NaN-Werte beeinflusst, daher ist es das, wonach ich suche. 'Cumsum' und' Cummcount' sind etwas, das funktioniert, aber ich bin mir nicht sicher, wie ich es mit Resample in der einzigen Zeile implementieren kann. – cd123