Получите первую неделю подряд в DataFrame - PullRequest
4 голосов
/ 05 апреля 2019

Я работал, пытаясь получить первую неделю подряд недель для определенного идентификатора в кадре данных, как это:

week     id
 1        1
 2        1
 3        1
 6        1
 7        1
 8        1
 3        2
 4        2

Таким образом, для идентификатора 1 три недели подряд (1-3), затем снова три недели подряд (6-8), а для идентификатора 2 - 2 (3-4). Итак, мой желаемый результат будет:

week     id   first_week
 1        1       1
 2        1       1
 3        1       1
 6        1       6
 7        1       6
 8        1       6
 3        2       3
 4        2       3

Мне удалось посчитать количество последовательных недель с помощью:

df.groupby(['id',df['week'].diff(-1).ne(-1).shift().bfill().cumsum()]).transform('count')

Но я не могу найти первую неделю (я хочу создать новый идентификатор, который добавляет, на какой неделе начинается серия последовательных недель)

1 Ответ

8 голосов
/ 05 апреля 2019

groupby получить diff и присвоить условие, затем просто ffill nan

df.loc[df.groupby('id').week.diff().ne(1),'fw']=df.week
df.fw=df.fw.ffill()
df
Out[158]: 
   week  id   fw
0     1   1  1.0
1     2   1  1.0
2     3   1  1.0
3     6   1  6.0
4     7   1  6.0
5     8   1  6.0
6     3   2  3.0
7     4   2  3.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...