Панды создают группы на основе предыдущего значения - PullRequest
3 голосов
/ 09 октября 2019

У меня есть DataFrame, который сортируется по целочисленному столбцу v1:

   v1
0   1
1   5
2   6
3  12
4  15
5  23
6  24
7  25
8  33

Я хочу сгруппировать значения в v1 следующим образом: Если значение - prev_value <5, они имеют ту же группу. <br>Для этого я хочу дать возрастающее число для каждой группы.

Поэтому я хочу создать еще один столбец, v1_group, который будет иметь вывод:

   v1  v1_group
0   1         1 
1   5         1  
2   6         1
3  12         2  # 12 - 6 > 5, new group
4  15         2
5  23         3
6  24         3
7  25         3
8  33         4

Мне нужно сделать ту же задачу со столбцом datetime: групповые значения, если значение - prev_value

Я знаю, что могу решить эту проблему, используя стандартный цикл for. Есть ли лучший способ для панд?

1 Ответ

1 голос
/ 09 октября 2019

IIUC,

df['v1_group'] = df.v1.diff().ge(5).cumsum() + 1

Выход:

   v1  v1_group
0   1         1
1   5         1
2   6         1
3  12         2
4  15         2
5  23         3
6  24         3
7  25         3
8  33         4
...