J'ai un dataframe pandas qui ressemble à:
count_in_year
id year
1234 2017 2
2018 2
Et je dois compter combien de fois count_to_today se produit chaque année par id code>. c'est-à-dire que j'ai un compte courant depuis le début des temps, et Je veux compter le nombre de fois qu'il augmente par an.
df = pd.DataFrame(data={'id':[1234, 1234, 1234, 1234, 1234], 'year':['2017', '2017', '2018', '2018', '2018'], 'count_to_today':[1, 2, 3, 3, 4]})
df
id year count_to_today
0 1234 2017 1
1 1234 2017 2
2 1234 2018 3
3 1234 2018 3
4 1234 2018 4
I ' Je suis un peu confus sur la façon de faire cela. Je sais que je dois grouper par id et année , mais je ne sais pas comment obtenir .count () ou .value_counts () pour me donner les chiffres par an.
3 Réponses :
Vous pouvez utiliser diff et groupby:
(df.count_to_today.diff()
.ne(0)
.groupby([df.id, df.year])
.sum()
.astype(int)
.reset_index())
id year count_to_today
0 1234 2017 2
1 1234 2018 2
df.count_to_today.diff().ne(0).groupby([df.id, df.year]).sum()
id year
1234 2017 2.0
2018 2.0
Name: count_to_today, dtype: float64
Si vous souhaitez compter les ID par an essayez d'utiliser -
df[['ID','Year']].groupby('Year').agg('count')
ou-
df[['ID','Year']].groupby('Year').count()
Modifiez les variables comme vous voulez obtenir votre résultat.
Cela ne répond pas à la partie de la question qui demande "Je veux compter le nombre de fois que cela augmente par an." ...
Utilisez cette structure:
df[['ID','Year']].groupby('Year').agg('count')
et
df[['ID','Year']].groupby('Year').count()
J'espère que cela fonctionnera correctement.Essayez ceci
p >
Les gars, "Je veux compter le nombre de fois qu'il augmente par an."