嗨,我正在尝试按彼此更接近的值对一列进行分组,然后再根据其他值对另一列进行排序,例如:
column1 column2 column3
322 16 a
326 11 b
323 22 c
323 26 d
323 20 e
324 15 f
325 18 g
498 20 h
498 30 i
495 22 j
496 15 k
我希望使用具有+3的值并将列2升序排序的值对column1进行分组
结果:
column1 , column2
323 (+-3) b,f,a,g,e,c,d
495 (+-3) k,h,j,i
因为我们有
(b,11),(f,15),(a,16),(g,18),(e,20),(c,22),(d,26) (k,15),(h,20),(j,22),(i,30)
答案 0 :(得分:3)
在这种情况下,我们需要在sort_values
之后使用cumsum
和diff
s=df.sort_values(['column1'])
s['New']=s.column1.diff().gt(3).cumsum()
s=s.sort_values(['New','column2'])
s.groupby('New').agg({'column1':'first','column3':','.join})
column1 column3
New
0 326 b,f,a,g,e,c,d
1 496 k,h,j,i