J'ai une dataframe qui ressemble à ci-dessous:Comment appliquer la fonction groupby pour obtenir le nombre de mois précédent?
dff = pd.DataFrame({'month': ['1','1','1','1','2','2','2','2','3','3'],
'sym': ['abc','pqr','xyz','lmn','abc','pqr','xyz','lmn','aaa','bbb'],
'count': ['10','14','25','20','34','23','43','34','10','20']})
dff = dff[['sym','month','count']]
print dff
sym month count
0 abc 1 10
1 pqr 1 14
2 xyz 1 25
3 lmn 1 20
4 abc 2 34
5 pqr 2 23
6 xyz 2 43
7 lmn 2 34
8 aaa 3 10
9 bbb 3 20
Je veux créer une nouvelle colonne à cette trame de données nommé « prev_count ». Pour la création de cette nouvelle colonne « prev_count » besoin de suivre ci-dessous règle:
- Si le mois précédent ne sont pas disponibles dans le groupe particulier, alors la valeur « prev_count » devrait être 0.
- Si le mois précédent est disponible en le groupe particulier, puis la valeur du compte du mois précédent doit être la valeur de "prev_count".
Je l'ai essayé avec la fonction groupby comme ci-dessous:
def f(df):
print df
return ""
dff['pre_count'] = dff.groupby('sym').apply(f)
Mais je suis incapable de comprendre comment je peux garder la valeur de comptage de piste du mois précédent. Est-ce leur façon de pandas de faire une telle manipulation sur les données?
Résultats escomptés:
sym month count prev_count
0 abc 1 10 0
1 pqr 1 14 0
2 xyz 1 25 0
3 lmn 1 20 0
4 abc 2 34 10
5 pqr 2 23 14
6 xyz 2 43 25
7 lmn 2 34 20
8 aaa 3 10 0
9 bbb 3 20 0
@ JohnGalt- Ok merci – kit