Как перебрать строку pandas dataframe в python и создать новый столбец на основе значений, присутствующих в строке - PullRequest
0 голосов
/ 06 июня 2018

У меня есть фрейм данных пациента, и образец выглядит следующим образом.

pat_id дата лекарства lag_date lag_grace_dte

1234 A 1 января-17 1 января-1711 января 17
1234 A 11 января 17 17 января 17 11 января 17
1234 A 26 января 17 11 января 17 26 января 17
1234 A5 февраля 17 26 января 17 15 февраля 17

Пример данных и требуемый вывод и вывод должен быть основан на идентификаторе пациента, дате и lag_grace_dateстолбцы.

Ниже приведен бизнес-критерий.Я пытаюсь создать алгоритм накапливания для пациента

Если пациент «1234» принимал препарат «А» в период с 01.01.2017 по «январь-01-2017», то его следующая дата посещения (дата) должна быть включена'Jan-21-2017'.это должно быть проверено с lag_grace_dte согласно ниже.Если его следующая дата меньше даты lag_grace, то мы должны изменить столбец даты как lag_grace_dte +1 для этого пациента в этой строке.

if date < lag_grace_dte then lag_grace_dte+1 end as mod_date

вывод выглядит следующим образом:

pat_id  drug    date        lag_grace_dte   mod_date

1234    A       1-Jan-17    11-Jan-17       1-Jan-17
1234    A       11-Jan-17   11-Jan-17       12-Jan-17
1234    A       26-Jan-17   26-Jan-17       26-Jan-17
1234    A       5-Feb-17    15-Feb-17       5-Feb-17

Заранее спасибо.

Ниже приведен код, который я пытаюсь, но он дает мне столбец даты в качестве вывода без каких-либо изменений.Я новичок в Python, пожалуйста, предложите мне это.

from datetime import date, timedelta
day = timedelta(days = 1)   
for a,b,c,d in zip(drugs.pat_id,drugs.date, drugs.lag_date,drugs.lag_grace_dte):        
    if b==c:                
        adj_dte = drugs.date        
    elif b<d:                    
        adj_dte = drugs.lag_grace_dte+day        
    elif b>d:                        
        adj_dte = drugs.date
    print(adj_dte)
    break

Вывод вышеуказанного кода:

mod_date

1-Jan-1711 января 17 26 января 17 5 февраля 17

...