结合连续价值的熊猫

时间:2018-07-12 01:40:49

标签: python pandas dataframe pandas-groupby

我正在尝试将熊猫中的连续值合并以创建新的输出数据框,并可能需要一些帮助。

输入:

   depth   type
0   50      0
1   100     1
2   150     1
3   200     1
4   250     0
5   300     0
6   350     0
7   400     1
8   450     1
9   500     0

输出:

   start_depth   stop_depth  type
0     100          200        1
1     400          450        1

2 个答案:

答案 0 :(得分:3)

按照温家宝对agg min/max的建议:

c=(df.type != df.type.shift()).cumsum().values
ndf = df.groupby([c, 'type']).depth.agg(['min','max']).reset_index(level=1)

    type   start  end
1   0      50     50
2   1      100    200
3   0      250    350
4   1      400    450
5   0      500    500

仅获得type==1,只需选择

ndf[ndf.type==1]

    type   start end
2   1      100   200
4   1      400   450

答案 1 :(得分:2)

这是我的解决方案,usig agg

df.loc[df.type==1,:].groupby(df.type.eq(0).cumsum()).agg({'depth':['min','max'],'type':'first'})
Out[42]: 
      type depth     
     first   min  max
type                 
1        1   100  200
4        1   400  450