【发布时间】:2016-08-18 13:29:12
【问题描述】:
我有一个具有以下结构的数据框 - 开始、结束和高度。
数据框的一些属性:
- 数据帧中的一行总是从前一行结束的地方开始,即如果第 n 行的结束是 100,那么第 n+1 行的开始是 101。
- 第 n+1 行的高度始终与第 n+1 行的高度不同(这就是数据位于不同行的原因)。
我想对数据框进行分组,将高度分组为 5 个长的桶,即桶是 0、1-5、6-10、11-15 和 >15。
请参阅下面的代码示例,我正在寻找的是 group_by_bucket 函数的实现。
我尝试查看其他问题,但无法得到我所寻找的确切答案。
提前致谢!
>>> d = pd.DataFrame([[1,3,5], [4,10,7], [11,17,6], [18,26, 12], [27,30, 15], [31,40,6], [41, 42, 7]], columns=['start','end', 'height'])
>>> d
start end height
0 1 3 8
1 4 10 7
2 11 17 6
3 18 26 12
4 27 30 15
5 31 40 6
6 41 42 7
>>> d_gb = group_by_bucket(d)
>>> d_gb
start end height_grouped
0 1 17 6_10
1 18 30 11_15
2 31 42 6_10
【问题讨论】:
-
这不是骗人的吗:stackoverflow.com/questions/21441259/…?在您的情况下,您想在“高度”上调用
cut并传递一个范围,例如pd.cut(d['height'], bins=np.arange(1, d['height'].max()+1, 5)) -
在您的示例中,
height_grouped值不是唯一的。d_gb有三个组,但其中两个是相同的,所以你应该有一个额外的分组标准,你没有提到。
标签: python pandas group-by intervals