我有一个如下数据框:
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
简单的方法是迭代每一行,然后根据模式更改更新“组”列。我想知道是否有更好的方法可以解决大熊猫问题,或者解决问题的麻木方法。
答案 0 :(得分:1)
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