向dataframe添加计数列,该列在另一行更改时计数

2024-06-01 06:50:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个dataframe,它的列如下:

      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开始。我肯定熊猫有我的天赋。你能帮忙吗?你知道吗

另外,我之所以需要创建这个y列,是因为我必须能够按每个数字对行进行分组,如果有一种方法可以在不创建行的情况下基本上完成相同的任务,那也可以。你知道吗


Tags: 方法dataframe情况数字计数天赋
2条回答

使用Numpy数组

注意:这也推广到object数据类型,因为我们正在评估相等性。你知道吗

df.assign(y=np.append(False, df.x.values[1:] != df.x.values[:-1]).cumsum())

   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

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

相关问题 更多 >