我有一个数据框,其中的列填充了1和0。如何为每个组分配一个从1开始的连续数字?
我已经尝试过跨行进行for循环,但是我需要进行列操作以提高性能。
d = {'col1': [1,1,1,0,0,1,1,0,0,0,1,1]}
df1 = pd.DataFrame(data=d)
df1
col10 11 12 13 04 05 16 17 08 09 010 111 1
我需要以下输出:
col1 col20 1 11 1 12 1 13 0 24 0 25 1 36 1 37 0 48 0 49 0 410 1 511 1 5
最佳答案
您可以比较移位后的值是否不相等,并用Series.cumsum
加累计和:
df1['col2'] = df1['col1'].ne(df1['col1'].shift()).cumsum()
print (df1)
col1 col2
0 1 1
1 1 1
2 1 1
3 0 2
4 0 2
5 1 3
6 1 3
7 0 4
8 0 4
9 0 4
10 1 5
11 1 5
关于python - 拆分/分组 Pandas 数据框列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54441902/