Pandas数据框中每天新出现的次数(不是计数或总和)

想象一下,我有一个像下面这样的数据框,我将每天看到的每只动物记录为一个新行。

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

请注意,这是一个简化的示例。我知道在上面的这个例子中,人们可能更喜欢使用组合groupbycount计算每天的出现次数(例如总结每天出现的次数 pandas)。但是,在我的现实世界中情况并非如此。我需要给它们编号,以便以后可以将这些数字用于其他用途。

回答

您可以使用series.factorize超过groupby.transform

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


以上是Pandas数据框中每天新出现的次数(不是计数或总和)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>