2017-01-17 1 views
3

Cette question est similaire à ma précédente: Shifting elements of column based on index given condition on another columnCalcul de la moyenne mobile pondérée exponentielle de roulement pour chaque cours de l'action au fil du temps

J'ai un dataframe (df) avec 2 colonnes et 1 index.

L'index est datetime index et est au format 2001-01-30 .... etc et l'index est trié par DATE et il existe des milliers de dates identiques (et des dates mensuelles). La colonne A est le nom de la société (qui correspond à la date), la colonne B est le prix des actions de la société dans la colonne A pour la date de l'indice.

Il existe maintenant plusieurs sociétés dans la colonne A pour chaque date, et les sociétés varient dans le temps (donc les données ne sont pas entièrement prévisibles).

Je veux créer une colonne C qui a 3 jours la moyenne mobile de pondération exponentielle du prix pour une entreprise, notamment en utilisant les dates actuelles et 2 avant pour une entreprise donnée dans la colonne A.

J'ai essayé quelques méthodes mais ont échoué. Merci.

Répondre

2

Essayez:

df.groupby('ColumnA', as_index=False).apply(lambda g: g.ColumnB.ewm(3).mean())