繁体   English   中英

pandas dataframe 中每天新出现的次数(不计数或总和)

[英]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

请注意,这是一个简化的示例。 我知道在上面的这个例子中,人们可能更喜欢使用groupbycount的组合来计算每天的发生次数(例如,将每天的发生次数相加 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM