[英]Number new occurrences per day in pandas dataframe (not count or sum)
想象一下,我有一个 dataframe,如下图所示,我将每天看到的每只动物记录为新行。
Day Animal
1 Lion
1 Elephant
1 Giraffe
1 Elephant
2 Elephant
2 Rhino
2 Rhino
2 Lion
2 Elephant
我想创建一个新列,其中包含1
表示每天看到的第一只动物(以及当天每次看到同一只动物),并包含2
表示下一只动物,依此类推。 上面示例的结果应如下所示:
Day Animal Number
1 Lion 1
1 Elephant 2
1 Giraffe 3
1 Elephant 2
2 Elephant 1
2 Rhino 2
2 Rhino 2
2 Lion 3
2 Elephant 1
请注意,这是一个简化的示例。 我知道在上面的这个例子中,人们可能更喜欢使用groupby
和count
的组合来计算每天的发生次数(例如,将每天的发生次数相加 pandas )。 但是,在我的真实案例中,情况并非如此。 我需要给它们编号,以便以后可以将这些数字用于其他用途。
你可以在groupby.transform
上使用series.factorize
df['Number'] = df.groupby("Day")['Animal'].transform(lambda x: x.factorize()[0])+1
print(df)
Day Animal Number
0 1 Lion 1
1 1 Elephant 2
2 1 Giraffe 3
3 1 Elephant 2
4 2 Elephant 1
5 2 Rhino 2
6 2 Rhino 2
7 2 Lion 3
8 2 Elephant 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.