根据第一列中的模式更改在pandas数据框中创建新列

时间:2018-09-16 17:09:50

标签: python pandas

我有一个如下数据框:

df = pd.DataFrame({'Status': [0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1]})

我想根据“状态”模式的更改创建一个新列“组”。基本上我想输出如下:

    Status  Group
0        0      1
1        0      1
2        1      2
3        1      2
4        1      2
5        0      3
6        0      3
7        0      3
8        0      3
9        1      4
10       1      4

简单的方法是迭代每一行,然后根据模式更改更新“组”列。我想知道是否有更好的方法可以解决大熊猫问题,或者解决问题的麻木方法。

1 个答案:

答案 0 :(得分:1)

使用pd.Series.cumsum

df['Group'] = df.Status.ne(df.Status.shift()).cumsum()

df['Group'] = df.Status.diff().ne(0).cumsum()

两者都产量

    Status  Group
0   0       1
1   0       1
2   1       2
3   1       2
4   1       2
5   0       3
6   0       3
7   0       3
8   0       3
9   1       4
10  1       4