我有一个像这样的数据框:
index value
---- -----
1 A
2 A
3 A
4 A
5 B
6 B
7 A
8 B
9 C
10 C
我想添加一列以继续计数我的值,如下所示:
index value continues-count
---- ----- ----------
1 A 1
2 A 2
3 A 3
4 A 4
5 B 1
6 B 2
7 A 1
8 B 1
9 C 1
10 C 2
我可以使用循环来执行此操作,但是由于我的数据集非常庞大,因此需要花费很长时间!
答案 0 :(得分:3)
使用cumsum
和itertools
太无聊了,让我们尝试import itertools
df['New']=list(itertools.chain(*[list(range(len(list(y))))for _,y in itertools.groupby(df.value)]))
df
Out[596]:
index value New
0 1 A 0
1 2 A 1
2 3 A 2
3 4 A 3
4 5 B 0
5 6 B 1
6 7 A 0
7 8 B 0
8 9 C 0
9 10 C 1
pandas
df['New']=df.groupby((df.value!=df.value.shift()).ne(0).cumsum()).cumcount()+1
resources
- config.properties
src
- Main.java
- Filter.java
- module
- test.txt