熊猫groupby连胜

时间:2019-03-04 15:25:10

标签: python pandas

我有一个这样的数据框:

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

1 个答案:

答案 0 :(得分:2)

diffcumsum1一起使用,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())}