import pandas as pd
value = [1,1,2,2,2,1,2,2,2,3,3,4]
df = pd.DataFrame(value)
df['count'] = [2,2,3,3,3,1,3,3,3,2,2,1]
我想生成"计数"列,但不要使用循环,因为原始数据很大。
是否有功能或其他有效的方法来做到这一点?
使用GroupBy.transform
表示由count
s 填充的新列,Series
由shift
d 列ne
(!=
( 创建,并为连续组添加cumsum
:
df['count'] = df.groupby(df[0].ne(df[0].shift()).cumsum())[0].transform('size')
print (df)
0 count
0 1 2
1 1 2
2 2 3
3 2 3
4 2 3
5 1 1
6 2 3
7 2 3
8 2 3
9 3 2
10 3 2
11 4 1