首页 > 解决方案 > 如何计算熊猫中细胞不变的次数?

问题描述

使用以下数据:

A
false
false
false
false
true
false
false
true
true
true

我想生成以下输出:

A        B
false    1
false    2
false    3
false    4
true     1
false    1
false    2
true     1
true     2
true     3

因此,在每次更改时,我都会重新启动计数器,然后只要内容没有更改就递增。

我可以用一个循环(伪代码)来做到这一点:

count = 0
current = df['A'][0]
for i in df['A'].index:
    if df['A'][i] != current:
        current = df['A'][i]
        count = 0
    df['B'][i] = ++count

但是由于循环会非常慢,因此是否有熊猫式的方法来实现这一点?

标签: pythonpandas

解决方案


你可以试试这个:


df['B'] = df.groupby(df.A.ne(df.A.shift()).cumsum()).cumcount()+1                                                                                                                 


       A      B
0  False      1
1  False      2
2  False      3
3  False      4
4   True      1
5  False      1
6  False      2
7   True      1
8   True      2
9   True      3

推荐阅读