根据索引的接近度拆分pandas数据帧

时间:2018-03-14 10:32:19

标签: python python-3.x pandas bigdata

我有一个很大的索引数据框,我想根据它们的索引进行分组。数据索引如下:

Index 
...    
79228         
79230         
79232         
101930      
101932      
101934
101936
101938      
147224      
147226      
147228
147230
...    

如何分组:

Index     group_id
...
79228     1  
79230     1    
79232     1    
101930    2  
101932    2  
101934    2
101936    2
101938    2  
147224    3  
147226    3  
147228    3
147230    3
...

一个选项是使用DataFrame.iterrows()迭代每一行并比较索引,但这看起来非常低效。有没有可以更有效地做到这一点的熊猫方式?

注意:相同范围内的索引的数量和值是随机的,所以我不能这样分组。

数据以大数字分隔。例如,一个指数是80 000,以下是100 000。

1 个答案:

答案 0 :(得分:0)

这是设置容差水平的一种方法。在这里,我们计算地板商100并进行分解。

df['NewIndex'] = (df['Index'].diff() > 100).cumsum() + 1

#    Index  NewIndex
# 0      1         1
# 1      3         1
# 2      8         1
# 3   1003         2
# 4   1005         2
# 5   1006         2
# 6   3005         3
# 7   3010         3
# 8   3016         3

<强>解释

  • 查找差异高于阈值的行,例如100。
  • 使用pd.Series.cumsum()将这些标记分组。
  • 为所需的输出添加1。