我有一个很大的索引数据框,我想根据它们的索引进行分组。数据索引如下:
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。
答案 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
<强>解释强>
pd.Series.cumsum()
将这些标记分组。