我有一个这样的数据框:
df = pd.DataFrame({'dir':[0,0,0,1,1,0,1], 'price': [100, 102, 110, 120, 125, 200, 210]})
dir price
0 0 100
1 0 102
2 0 110
3 1 120
4 1 125
5 0 200
6 1 210
,我想对0和之后的1进行分组。我想要的结果看起来像这样:
dir price
0 0 100
1 0 102
2 0 110
3 1 120
4 1 125
dir price
5 0 200
6 1 210
答案 0 :(得分:2)
将diff
与cumsum
和1
一起使用,0
将作为一个新组开始计数,因此diff
应该相等( eq
到-1
for x , y in df.groupby(df.dir.diff().eq(-1).cumsum()):
print(y)
dir price
0 0 100
1 0 102
2 0 110
3 1 120
4 1 125
dir price
5 0 200
6 1 210
d={x: y for x , y in df.groupby(df.dir.diff().eq(-1).cumsum())}