我有一个包含如下内容的数据集:
SNo Cookie
1 A
2 A
3 A
4 B
5 C
6 D
7 A
8 B
9 D
10 E
11 D
12 A
假设我们有 5 个 cookie 'A,B,C,D,E'。现在我想计算在遇到新 cookie 后是否有任何 cookie 重新出现。例如,在上面的示例中,cookie A 在第 7 位再次遇到,然后也在第 12 位遇到。 注意 我们不会将 A 算在第 2 位,因为它同时出现,但在第 7 位和第 12 位,我们在再次看到 A 之前已经看到了许多新的 cookie,因此我们算那个实例。所以基本上我想要这样的东西:
Sno Cookie Count
1 A 2
2 B 1
3 C 0
4 D 2
5 E 0
谁能给我背后的逻辑或 python 代码?
请您参考如下方法:
实现此目的的一种方法是首先摆脱连续的 Cookie,然后在使用 duplicated 之前找到 Cookie 出现的位置,最后 groupby cookie 并得到总和:
no_doubles = df[df.Cookie != df.Cookie.shift()]
no_doubles['dups'] = no_doubles.Cookie.duplicated()
no_doubles.groupby('Cookie').dups.sum()
这给你:
Cookie
A 2.0
B 1.0
C 0.0
D 2.0
E 0.0
Name: dups, dtype: float64
