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