J'ai un dataframe de la structure suivante qui est simplifiée à cause de cette question:dataframe moyennes binned, sauter 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
Ce que je veux faire est de créer une moyenne binned 3 jours, je peux facilement faire en utilisant
df = df.resample('3D', on='Date').mean()
Cependant, l'utilisation de cette méthode les valeurs nan sont considérées comme des valeurs nulles et affectent la valeur moyenne comme ceci:
Date A B
2016/1/1 nan nan
2016/1/2 nan nan
2016/1/3 3 2
Utilisation df.resample('3D', on='Date').mean()
retours:
Date A B
2016/1/3 1 2/3
Où que je souhaite obtenir:
Date A B
2016/1/3 3 2
Lorsque la na valeurs sont ignorées pour le calcul.
Selon la documentation sur .mean() Je devrais être en mesure de skipna valeurs comme indiqué sur la page:
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mean.html#pandas.Series.mean
Cependant quand je lance ce qui suit:
df = df.resample('3D', on='Date').mean(skipna=True)
Le le code suivant est renvoyé:
UnsupportedFunctionCall: numpy operations are not valid with resample. Use .resample(...).mean() instead
Comment puis-je faire pour solv cette erreur et de produire les valeurs moyennes correctes que je désire?
Je pense qu'il ya un problème, parce que pour 'df1 = df.resample ('3D', on = 'Date'). mean()' J'obtiens '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
Donc toutes les valeurs de 'NaN 'sont exclues du nombre de moyennes. – jezrael
Oui c'est correct, le compte de la moyenne est affecté par les valeurs NaN donc les exclure est ce que je cherche. 'Cumsum' et' cumcount' est quelque chose qui semble fonctionner mais je ne suis pas sûr de savoir comment l'implémenter sur la seule ligne avec resample. – cd123