一种方法:
df = pd.Dataframe([[1,3,10], [4,10,7], [11,17,6], [18,26, 12],[27,30, 15], [31,40,6], [41, 42, 6]], columns=['start','end', 'height'])
用于
cut分组:
df['groups']=pd.cut(df.height,[-1,0,5,10,15,1000])
查找断点:
df['categories']=(df.groups!=df.groups.shift()).cumsum()
然后
df是:
""" start end height groups categories0 1 3 10 (5, 10]01 4 10 7 (5, 10]02 11 17 6 (5, 10]03 18 26 12 (10, 15]14 27 30 15 (10, 15]15 31 40 6 (5, 10]26 41 42 6 (5, 10]2"""
定义有趣的数据:
f = {'start':['first'],'end':['last'], 'groups':['first']}并使用
groupby.agg功能:
df.groupby('categories').agg(f)""" groups end start first last firstcategories 0 (5, 10] 17 11(10, 15] 30 182 (5, 10] 42 31"""


