首页 > 解决方案 > 将计数列添加到数据框中,当另一行更改时计数

问题描述

我有一个数据框,其中包含这样的列:

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

我想添加一个每次x更改都会计数的列,以便我的最终结果如下所示:

      x     y
0     1     0
1     1     0
2     0     1
3     1     2
4     0     3
5     0     3
6     0     3
7     1     4
8     1     4
9     1     4

如果不循环,我无法找出最快的方法。我也不在乎是y从 0 还是从 1 开始。我敢肯定,我可以使用 pandas 天生的东西。你能帮我吗?

PS。我需要制作此y列的原因是确实能够按每个数字对行进行分组,如果有一种方法可以在不创建它的情况下基本上完成相同的事情,那也可以。

标签: pythonpython-3.xpandas

解决方案


diff可以申请后cumsum

df.x.diff().ne(0).cumsum()-1
Out[132]: 
0    0
1    0
2    1
3    2
4    3
5    3
6    3
7    4
8    4
9    4
Name: x, dtype: int32

推荐阅读