обновить текущую строку на основе значений следующей строки - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть следующий фрейм данных:

df = pd.DataFrame({'ID': ['1','1','1','1','2','2','2'], \
                   'episode': ['111', '112','113', '114','115','116','117'], \
                   'risk': ['L', 'L','H', 'L','H','L','L'], \
                   'date': ['21-01-2015', '27-02-2015','19-03-2015', '09-05-2015','3-01-2015','7-02-2015','11-05-2015']})

В каждом идентификаторе может быть несколько строк (разных номеров эпизодов), и каждая строка имеет идентификацию риска как L или H. Я хочу проверить, для каждого лиID, существует риск H. Если в любом эпизоде ​​идентификатора присутствует риск H, я хочу изменить риск в оставшихся строках на H, чтобы любые предшествующие эпизоды одного и того же идентификатора имели риск H. Данныеуже отсортировано по ID, эпизоду и дате.Окончательный результат будет:

  ID       date episode risk
0  1 2015-01-21     111    L
1  1 2015-02-27     112    L
2  1 2015-03-19     113    H
3  1 2015-05-09     114    H
4  2 2015-01-03     115    H
5  2 2015-02-07     116    H
6  2 2015-05-11     117    H

Как мне этого добиться?

1 Ответ

0 голосов
/ 12 февраля 2019

Проверка с groupby + cumprod

df['risk'].ne('H').groupby(df['ID']).cumprod().map({True:'L',False:'H'})
Out[265]: 
0    L
1    L
2    H
3    H
4    H
5    H
6    H
Name: risk, dtype: object
#df['risk']=    df['risk'].ne('H').groupby(df['ID']).cumprod().map({True:'L',False:'H'})
...