Python 识别和统计数据帧中的连续行

Python 识别和统计数据帧中的连续行,python,pandas,Python,Pandas,我有以下数据框: df = pd.DataFrame({'Tipo': ['A','A','B','B','B','C','B','A','C','B','A','A','A','A','A','A','A','C','B','B','A']}) Type 0 A 1 A 2 B 3 B 4 B 5 C 6 B 7 A 8 C 9 B 10 A 11 A 12 A 13 A 14

我有以下数据框:

df = pd.DataFrame({'Tipo': ['A','A','B','B','B','C','B','A','C','B','A','A','A','A','A','A','A','C','B','B','A']})

     Type
0     A
1     A
2     B
3     B
4     B
5     C
6     B
7     A
8     C
9     B
10    A
11    A
12    A
13    A
14    A
15    A
16    A
17    C
18    B
19    B
20    A 
目标是创建一个新列“Rep”,该列统计第一次重复的值所对应的连续行,例如:

     Type  Rep
0     A     2
1     A     2
2     B     3
3     B     3
4     B     3
5     C     1
6     B     1
7     A     1
8     C     1
9     B     1
10    A     7
11    A     7
12    A     7
13    A     7
14    A     7
15    A     7
16    A     7
17    C     1
18    B     2
19    B     2
20    A     1
我找到了一种方法来识别值的索引,但我必须更改这些值的编号才能正常工作,我不知道如何生成列rep:

df.loc[df['Type'] == 'B', 'Type'] = 2
mask = df == 2

index_type = mask.type[mask.type].index.values
输出:

[2 3 4 6 9 18 19]

通过比较
系列
创建的连续组,该组由不等于创建,具有累积和,最后使用:

或用于计数:

df['Rep'] = g.groupby(g).transform('size')

详细信息

print (g)
0      1
1      1
2      2
3      2
4      2
5      3
6      4
7      5
8      6
9      7
10     8
11     8
12     8
13     8
14     8
15     8
16     8
17     9
18    10
19    10
20    11
Name: Type, dtype: int32

非常感谢您的解决方案,它非常有用
print (df)
   Type  Rep
0     A    2
1     A    2
2     B    3
3     B    3
4     B    3
5     C    1
6     B    1
7     A    1
8     C    1
9     B    1
10    A    7
11    A    7
12    A    7
13    A    7
14    A    7
15    A    7
16    A    7
17    C    1
18    B    2
19    B    2
20    A    1
print (g)
0      1
1      1
2      2
3      2
4      2
5      3
6      4
7      5
8      6
9      7
10     8
11     8
12     8
13     8
14     8
15     8
16     8
17     9
18    10
19    10
20    11
Name: Type, dtype: int32