我有一个数据框,其中的列填充了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/

10-16 02:55