Pandas:计算连续重复项(不使用循环)并将列添加到原始数据帧


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表示由counts 填充的新列,Seriesshiftd 列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

最新更新