如何计算熊猫列(Dataframe)中重复元素的出现次数? [重复]

问题描述 投票:0回答:1

我想枚举一个事件发生了多少次而没有中断,如果中断了,则从头开始计数,例如输入日期和事件,计数应该是:

| Date | event| Count |
| ---- | -----| ----- | 
| 1    |  A   |   1   |   
| 2    |  A   |   2   |
| 3    |  B   |   1   |
| 4    |  A   |   1   |
| 5    |  B   |   1   |
| 6    |  B   |   2   |
| 7    |  B   |   3   |
| 8    |  A   |   1   |
| 9    |  A   |   2   |

有人知道如何解决这个问题吗? 谢谢

我试过rank函数,但是再次发生时会继续统计之前的事件

python-3.x pandas dataframe rank enumerate
1个回答
0
投票

您可以通过将值与列中的先前值进行比较来生成每个

event
的组:

groups = (df['event'] != df['event'].shift()).cumsum()

输出:

1    1
2    1
3    2
4    3
5    4
6    4
7    4
8    5
9    5

然后您可以

groupby
event
groups
并取每组的 累计计数,加 1 使
Count
值从 1:

开始
df['Count'] = df.groupby(['event', groups]).cumcount()+1

输出:

  Date event  Count
0    1     A      1
1    2     A      2
2    3     B      1
3    4     A      1
4    5     B      1
5    6     B      2
6    7     B      3
7    8     A      1
8    9     A      2
© www.soinside.com 2019 - 2024. All rights reserved.